आपके पास समस्या का समाधान करने के कई विकल्प हैं। मैं पोक-द-कोड अप्राच पर ध्यान केंद्रित करूंगा, क्योंकि यह थोड़ी देर के बाद से मैंने django internals के साथ mucked था।
मैंने लिंक से नीचे प्रासंगिक कोड शामिल किया है। ध्यान दें कि मैंने अप्रासंगिक भागों को हटा दिया है। यह भी ध्यान रखें कि जिस भाग को आप संपादित करेंगे आपका केस यहां को एक रिएक्टर की आवश्यकता है।
जब तक आप संतुष्ट न हों, निम्न एल्गोरिदम का पालन करें।
- फ़ील्ड (एक या अधिक) अलग-अलग फ़ंक्शन (ओं) के आधार पर
if
विवरणों को रेफैक्टर करें।
- जब तक आप यह पता नहीं लगाते कि कौन से क्षेत्र सामान्य संबंधों के अनुरूप हैं, निरीक्षण कोड जोड़ें।
- सामान्य संबंधों का पालन किए जाने तक निष्कर्षण कोड जोड़ें।
टेस्ट।
def handle_models(self, models, **options):
# SNIP handle options
all = objects
if propagate:
collected = set([(x.__class__, x.pk) for x in all])
while objects:
related = []
for x in objects:
if DEBUG:
print "Adding %s[%s]" % (model_name(x), x.pk)
# follow forward relation fields
for f in x.__class__._meta.fields + x.__class__._meta.many_to_many:
# YOU CASE HERE
if isinstance(f, ForeignKey):
new = getattr(x, f.name) # instantiate object
if new and not (new.__class__, new.pk) in collected:
collected.add((new.__class__, new.pk))
related.append(new)
if isinstance(f, ManyToManyField):
for new in getattr(x, f.name).all():
if new and not (new.__class__, new.pk) in collected:
collected.add((new.__class__, new.pk))
related.append(new)
# SNIP
objects = related
all.extend(objects)
# SNIP serialization
प्रासंगिक स्रोत शामिल करने के लिए प्रश्न संपादित करें। मैं यह देखने के लिए कि आप किस बारे में बात कर रहे हैं, किसी अन्य साइट पर क्लिक करने का प्रयास नहीं करने जा रहा हूं, और इस समस्या को खोजने के लिए किसी भी समस्या के लिए यह अधिक कठिन है। –
आपको अपनी समस्या के बारे में कुछ विवरण जोड़ना चाहिए, आपके पास वास्तव में क्या समस्या है? –