दिलचस्प पोस्ट
यूटीएफ -8: जनरल? बिन? यूनिकोड? SimpleDateFormat तक पहुंच को सिंक्रनाइज़ करना आंतरिक भंडारण एंड्रॉइड में फ़ाइल को सहेजना अलग-अलग तराजू के साथ matplotlib में एकाधिक अक्ष पोस्टग्रेएसक्यूएल: टेक्स्ट और वर्कर के बीच का अंतर (चरित्र बदलता है) PHP में Stackoverflow API से मैं GZIP-ed प्रतिक्रिया कैसे पढ़ सकता / सकती हूं? मेवेन – खाली निर्देशिकाएं कैसे शामिल करें Directory.EnumerateFiles बनाम Directory.GetFiles के बीच अंतर क्या है? कैसे बताओ कि क्या कोई स्ट्रिंग वैध पायथन कोड है फिक्स्ड टेबल सेल चौड़ाई एनएएसआईटीएगर को एक इंट में कनवर्ट कैसे करें? टीएसक्यूएल एमडी 5 हैश सी #। नेट एमडी 5 से अलग है MVC4 में ब्राउजर बैक बटन क्लिक ब्राउजर कैश कैसे साफ़ करें? ग्रहण / मेवेन: उन्हें चलते समय ज्यूनेट टेस्ट संकलित नहीं हुआ स्वयं हस्ताक्षरित वेबसाइट देखने के लिए UIWebView (कोई निजी एपीआई, NSURL कनेक्शन नहीं) – क्या यह संभव है?

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

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

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

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

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

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

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

Solutions Collecting From Web of "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