दिलचस्प पोस्ट
उपप्रकार में रिवेंडरैलि इन्टिगिलिटी को कैसे कार्यान्वित करें कन्वर्ट के लिए अंतर। टॉस्ट्रिंग () और .ओस्ट्रिंग () stat () त्रुटि 'ऐसा कोई फ़ाइल या निर्देशिका' नहीं है जब फ़ाइल नाम readdir () द्वारा वापस किया जाता है क्या मैं एक रिवर्स इटरेटर को आगे चलने वाले को बदल सकता हूँ? सी कोड से ALSA मास्टर वॉल्यूम सेट करें "Git commit" के बजाय "git commit –amend" को कैसे पूर्ववत करें पूरी तरह से और वर्बोज जी ++ चेतावनियां सक्षम करने के लिए झंडे हमेशा बड़े ओ विश्लेषण से क्यों निरंतर गिराया जाता है? पटकथाओं को अपनी वेबसाइट सैकड़ों बार एक दूसरे से बंद करने से रोकना चंचल तर्क के बाद वैकल्पिक तर्क TryUpdateModel, एएसपी। NET MVC 3 का वास्तविक उदाहरण जबकि खराब प्रोग्रामिंग अभ्यास के साथ (सच) है? सी में बड़ी संख्या के फ़ैक्टोरियल की गणना करना setvbuf stdin unbuffered करने में सक्षम नहीं है जावास्क्रिप्ट का उपयोग करते हुए पीडीएफ HTML से div में उत्पन्न करें

Django में मॉडल के खेतों को प्राप्त करें

एक Django मॉडल को देखते हुए, मैं अपने सभी क्षेत्रों को सूचीबद्ध करने की कोशिश कर रहा हूं I मैंने इसे _meta मॉडल विशेषता का उपयोग करने के कुछ उदाहरणों को देखा है, लेकिन मेटा के सामने अंडरस्कोर नहीं दर्शाता है कि _ मेटा विशेषता एक निजी विशेषता है और इसे सीधे एक्सेस नहीं किया जाना चाहिए? … क्योंकि, उदाहरण के लिए, _meta का लेआउट भविष्य में बदल सकता है और एक स्थिर एपीआई नहीं हो सकता है?

क्या इस नियम के लिए एक अपवाद है? क्या यह स्थिर और उपयोग करने के लिए तैयार है या इसे उपयोग करने के लिए बुरे व्यवहार माना जाता है? या क्या कोई फ़ंक्शन या कोई अन्य तरीका है जो किसी मॉडल के फ़ील्ड को _meta विशेषता का उपयोग किए बिना आत्मनिरीक्षण करता है? नीचे कुछ लिंक की एक सूची है, जो यह दिखाती है कि यह कैसे _meta विशेषता का उपयोग कर रहा है

किसी भी सलाह की बहुत प्रशंसा की जाएगी।

डीजेन्गो ऑब्जेक्ट प्राप्त / सेट फ़ील्ड

http://www.djangofoo.com/80/get-list-model-fields

कैसे डीजेंगो मॉडल क्षेत्रों को आत्मसात करना है?

वेब के समाधान से एकत्रित समाधान "Django में मॉडल के खेतों को प्राप्त करें"

_meta निजी है, लेकिन यह अपेक्षाकृत स्थिर है इसे औपचारिक रूप देने, इसे दस्तावेज करने और अंडरस्कोर हटाने का प्रयास है, जो 1.3 या 1.4 से पहले हो सकता है। मैं कल्पना करता हूं कि चीजों को पीछे की तरफ से संगत करने के लिए प्रयास किए जाएंगे, क्योंकि बहुत से लोग इसे वैसे भी उपयोग कर रहे हैं।

यदि आप विशेषतया संगतता के बारे में चिंतित हैं, तो उस फ़ंक्शन को लिखें, जो मॉडल लेता है और फ़ील्ड लौटाता है। इसका मतलब है कि भविष्य में कुछ परिवर्तन होता है, आपको केवल एक फ़ंक्शन को बदलना होगा।

 def get_model_fields(model): return model._meta.fields 

मेरा मानना ​​है कि यह Field ऑब्जेक्ट्स की एक सूची वापस करेगा। उदाहरण के लिए प्रत्येक फ़ील्ड का मूल्य प्राप्त करने के लिए, getattr(instance, field.name)

अद्यतन: एक Google ग्रीष्म ऑफ कोड के भाग के रूप में _मैटा ऑब्जेक्ट को बदलने के लिए Django योगदानकर्ता एक API पर काम कर रहे हैं देख:
https://groups.google.com/forum/#!topic/django-developers/hD4roZq0wyk
https://code.djangoproject.com/wiki/new_meta_api

मुझे पता है कि यह पोस्ट बहुत पुरानी है, लेकिन मैं किसी को भी यह बताने की परवाह करता हूं जो एक ही बात की खोज कर रहे हैं कि ऐसा करने के लिए एक सार्वजनिक और आधिकारिक एपीआई है: get_fields() और get_field()

उपयोग:

 fields = model._meta.get_fields() my_field = model._meta.get_field('my_field') 

https://docs.djangoproject.com/en/1.8/ref/models/meta/

यह ऐसा कुछ है जो एक मॉडल से एक फार्म का निर्माण करते समय स्वयं डीजेन्जर द्वारा किया जाता है। यह _ मेटा विशेषता का उपयोग कर रहा है, लेकिन जैसा कि बर्नहार्ड ने लिखा है, यह दोनों _meta.fields और _meta.many_to_many का उपयोग करता है। Django.forms.models.fields_for_model को देखते हुए, यह आप इसे कैसे कर सकते हैं:

 opts = model._meta for f in sorted(opts.fields + opts.many_to_many): print '%s: %s' % (f.name, f) 

_meta में निहित मॉडल फ़ील्ड कई स्थानों में संबंधित फ़ील्ड ऑब्जेक्ट की सूची के रूप में सूचीबद्ध हैं उनके साथ एक शब्दकोश के रूप में काम करना आसान हो सकता है जहां कुंजी क्षेत्र के नाम हैं।

मेरी राय में, यह मॉडल क्षेत्र के ऑब्जेक्ट को इकट्ठा करने और व्यवस्थित करने के लिए सबसे अयोग्य और अर्थपूर्ण तरीका है:

 def get_model_fields(model): fields = {} options = model._meta for field in sorted(options.concrete_fields + options.many_to_many + options.virtual_fields): fields[field.name] = field return fields 

( इस उदाहरण का उपयोग django.forms.models.fields_for_model में देखें।)

अब विशेष विधि है – get_fields ()

  >>> from django.contrib.auth.models import User >>> User._meta.get_fields() 

यह उन दो मापदंडों को स्वीकार करता है जिन्हें नियंत्रित करने के लिए उपयोग किया जा सकता है जो कि फ़ील्ड वापस आये हैं:

  • include_parents

    डिफ़ॉल्ट रूप से सही है पुनरावर्ती मूल कक्षाओं में परिभाषित क्षेत्र शामिल हैं। यदि गलत पर सेट है, तो get_fields () केवल मौजूदा मॉडल पर सीधे घोषित किए गए फ़ील्ड की खोज करेगा। मॉडल से फ़ील्ड जो अमूर्त मॉडल या प्रॉक्सी वर्ग से सीधे प्राप्त होते हैं, उन्हें मूल माना जाता है, माता-पिता पर नहीं।

  • include_hidden

    डिफ़ॉल्ट रूप से गलत यदि सही पर सेट है, तो get_fields () में फ़ील्ड शामिल होंगी जो कि अन्य फ़ील्ड की कार्यक्षमता को वापस करने के लिए उपयोग की जाती हैं इसमें किसी भी ऐसे फ़ील्ड्स भी शामिल होंगे जिनमें संबंधित_नाम (जैसे ManyToManyField, या ForeignKey) है जो कि "+" के साथ शुरू होता है

इसके बारे में क्या खयाल है।

 fields = Model._meta.fields