मैं अपने डीजेंगो एप्लिकेशन को किसी भी मॉडल के फ़ील्ड की सूची देने के लिए चाहूंगा (इससे जीयूआई स्वयं को बनाने में मदद मिलेगी)।Django: मॉडल के सभी रिवर्स रिश्तों को सूचीबद्ध करें
कल्पना कीजिए वर्गों (तथ्य की अनदेखी कि Steps
के सभी क्षेत्र Item
में हो सकता है, मैं अपने कारणों :-))
class Item(models.Model):
name = models.CharField(max_length=100)
description = models.TextField()
class Steps(models.Model):
item = models.OneToOneField('Item', related_name='steps')
design = models.BooleanField(default=False)
prototype = models.BooleanField(default=False)
production = models.BooleanField(default=False)
अब, जब मैं एक मॉडल के क्षेत्रों की सूची बनाना चाहते:
def get_fields(model):
return model._meta.fields + model._meta.many_to_many
लेकिन मैं अपने मॉडलों के लिए "संबंधित" एक-से-एक विदेशी कुंजी की सूची भी प्राप्त करना चाहता हूं। मेरे मामले में Item.steps
उस सूची में नहीं होगा।
मुझे पता चला है कि model._meta.get_all_field_names
में सभी संबंधित फ़ील्ड शामिल हैं।
लेकिन जब मैं Item._meta.get_field_by_name('steps')
फोन यह एक टपल एक RelatedObject
, जो मुझे तुरंत नहीं बताता है कि यह एक एकल संबंध है या एक एक-से-कई (मैं सूची में केवल एक-से-एक उलट चाहते पकड़े रिटर्न रिश्ते)।
इसके अलावा, मैं कोड के इस बिट का उपयोग कर सकते हैं:
from django.db.models.fields.related import SingleRelatedObjectDescriptor
reversed_f_keys = [attr for attr in Item.__dict__.values() \
if isinstance(attr, SingleRelatedObjectDescriptor)]
लेकिन मैं इस बात से बहुत संतुष्ट नहीं हूँ।
कोई भी मदद, विचार, टिप्स का स्वागत है!
चीयर्स
तो हाँ, मेरे पास मेरी ज़रूरत के लिए एक संभावित समाधान है, लेकिन मुझे बेहतर होने की खुशी होगी :) –