You mentioned SQLAlchemy. Does SQLAlchemy use actual functions/methods over magic strings to perform the operations?
If so, are we even able to swap out the Django ORM and use SQLAlchemy? On Wednesday, 10 October 2018 16:49:52 UTC+8, Michal Petrucha wrote: > > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA512 > > Hi, > > On Tue, Oct 09, 2018 at 08:03:27AM -0700, megaman wrote: > > I’m pretty new to Django. I have just learnt that could filter a > > query set this way: > > > > Questions.objects.filter(question_text__contains=‘what’) > > > > This kind of scares me a little because the filter “contains” is > > actually part of the field name. And I guess there are other > > operators appended to a field with the same __operation pattern. > > > > Wouldn’t this make refactoring tricky? Even renaming the field name > > has to be done carefully. In my mind, this feels messy. > > > > Is there an alternative to doing this? Something like: > > Questions.objects.filter(question_text.contains=‘what’) > > Or using “contains” as a function? > > The syntax that you suggested here, unfortunately, is not valid > Python. In an argument list, you can use either positional arguments, > which are either Python expressions, or keyword arguments, but those > require a valid Python identifier to be on the left side, which > “question_text.contains” is not. > > > Basically, can I do the same thing without adding “magic strings” to > > field names? > > Not at the moment, sorry. > > The idea of using a style more similar to SQLAlchemy has been floated > on the dev mailing list in the past (as in, years ago), but I cannot > even find the right thread at the moment, and I'm not aware of any > recent developments in this direction. > > All in all, chaining relationships, expressions, and filters with __ > in keyword arguments is how this is done in Django, and it's most > likely going to stay that way for the foreseeable future. > > Michal > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1 > > iQIcBAEBCgAGBQJbvb0CAAoJEHA7T/IPM/klndQP/Rd91q/4ANlPzkIzzJd3xRuX > xrJgvFnWNnv9tZdQK1kwaoQPRG2Msx9taahg2NPvVMQUNKbsMKW60dctmtUMpXVC > MXrWscLEwXecV94Zp10x9JFPJCMLjNvDELvWjkLIMz7/j/Ih4h5FnzfHTiwlg4DK > 2XkGiuBaXVM+TKST8RI1w7YphvcjfdehQzy1wRx8wS5FoqgrBjxJ4FJJojDYeo5s > MO0kfPLzPHg4QIU6eYwg2euSmACUorkrXVj0q1Qr8b5AsAkVCPVIM7ryapGrorp4 > 6EZ+97FMwemoCAtkWzL6jSvnnp87Mm/587BzxRTOJ0ff2pkUv5wjizTmED5/Hur9 > fmjz4CpuVx2wHsvt0ty4gNyQ693h2J1kRZxenP0iFAnzipRPy/Lll46uxB3MhX5P > uHjM+gqk6RvHfFh4H/jBe2mh2WSEKtpCPG5kRp3v/cw6qgV16CeQDk60u8Vlymqk > SXj0FGj9W/HGytVt11+tGKX0fPcnDyy4GF5CIRBVTfviq/yz+GZQcO1Dd2VoAaMc > fAwLpKsPNQrTnJBZXPSby/bgYTYljyIBl6YOe9heL4yCocQVEO6zQRmZ81hCzB4H > 9DoMiW6Y7oILcm7L/DC8DY/if2aLyxSN4Rnl05yPZnAmiatIMxssW5rWrz4+7YiS > iH62Ro8wxl48vrSxC7Hu > =gsXH > -----END PGP SIGNATURE----- > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/238506cc-196f-43d0-a80f-56aee847c1bf%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

