कृपया किसी ने मुझे सही किया, लेकिन मुझे लगता है कि मुझे एक समाधान मिल गया है, कम से कम अपने मामले के लिए।
मैं उन सभी तत्वों पर काम करना चाहता हूं जिनके गुण बिल्कुल समान हैं ... जो भी हो।
लेकिन मेरे पास कई मॉडल हैं, और इस दिनचर्या को सभी मॉडलों के लिए काम करना चाहिए। और यह करता है:
def selectByProperties(modelType, specify):
clause = "SELECT * from %s" % modelType._meta.db_table
if len(specify) > 0:
clause += " WHERE "
for field, eqvalue in specify.items():
clause += "%s = '%s' AND " % (field, eqvalue)
clause = clause [:-5] # remove last AND
print clause
return modelType.objects.raw(clause)
इस सार्वभौमिक सबरूटीन के साथ, मैं उन सभी तत्वों का चयन कर सकता हूं जो मेरे 'निर्दिष्ट' (प्रॉपर्टी, प्रॉपर्टी) संयोजनों के बिल्कुल समान हैं।
पहला पैरामीटर (मॉडल। मॉडल),
दूसरा शब्द जैसे: {"संपत्ति 1": "77", "संपत्ति 2": "12"}
और यह एक SQL स्टेटमेंट बनाता है
SELECT * from appname_modelname WHERE property1 = '77' AND property2 = '12'
और उन तत्वों पर एक QuerySet लौटाता है।
यह एक परीक्षण कार्य है:
from myApp.models import myModel
def testSelectByProperties ():
specify = {"property1" : "77" , "property2" : "12"}
subset = selectByProperties(myModel, specify)
nameField = "property0"
## checking if that is what I expected:
for i in subset:
print i.__dict__[nameField],
for j in specify.keys():
print i.__dict__[j],
print
तथा? तुम क्या सोचते हो?