2010-01-18 23 views
27

में छुपा क्षेत्र कुछ समय पहले मैंने मॉडल श्रेणी बनाई थी। मैंने इसके लिए कई मॉडलफॉर्म बनाए और यह खूबसूरती से काम किया।Django मॉडल

मुझे हाल ही में एक और वैकल्पिक (खाली = सही, शून्य = सही) फ़ील्ड जोड़ना पड़ा ताकि हम उपयोगकर्ताओं के बीच कुछ रिलेशनशिप डेटा स्टोर कर सकें। यह अनिवार्य रूप से एक रेफरल सिस्टम है।

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

मैं या तो कर सकते हैं:

  • क्षेत्र ऑटो बाहर करने के लिए तैयार हैं?
  • इसे सेट करें ताकि यह छुपा हुआ हो (स्वीकार्य नहीं है तो स्वीकार्य है)?

उत्तर

47
डॉक्स से

Using a subset of fields on the form पर:

सेट संपादन योग्य = मॉडल मैदान पर झूठी। नतीजतन, मॉडलफॉर्म के माध्यम से मॉडल से बनाए गए किसी भी फॉर्म में उस क्षेत्र को शामिल नहीं किया जाएगा।

+2

जादू:

यह चुनिंदा ModelAdmin में exclude का उपयोग कर खेतों को छिपाने के लिए संभव है, यहाँ कुछ से एक टुकड़ा मैं पर काम कर रहा हूँ है। वास्तव में काम करता है कि मुझे कैसे चाहिए। धन्यवाद! – Oli

+7

आपको स्वीकार करना होगा, इससे ज्यादा समझ नहीं आती है। क्या होगा यदि मैं एक फ़ील्ड केवल पढ़ने के लिए चाहता हूं? यह संपादन योग्य है = इसे छिपाने के बजाय गलत करना चाहिए। –

+0

@JustinY मेरे विचार बिल्कुल। –

4

आप कस्टम मॉडल फ़ील्ड सबक्लास को परिभाषित कर सकते हैं और formfield() विधि को छुपा इनपुट विजेट के साथ फ़ील्ड लौटने के लिए ओवरराइड कर सकते हैं। the documentation for custom fields देखें।

+0

हां, मैं ऑफरी के जवाब से पहले यह देख रहा था। सचमुच मुझे खुशी है कि मैं जो चाहता था उसे करने का एक आसान तरीका है लेकिन निश्चित रूप से ऐसे परिदृश्य हैं जिन्हें कस्टम फ़ील्ड की आवश्यकता होती है। आपके उत्तर के लिए धन्यवाद। – Oli

66

आप प्रस्तुत करना सकता है आप टेम्पलेट के लिए उपयोग किया है, तो यह निम्न कोड के साथ एक छिपी हुई फ़ील्ड है:

{{ form.field_name.as_hidden }} 
मानक के बजाय

:

{{ form.field_name }} 
+13

आपने "as_hidden" संपत्ति को कैसे समझ लिया? मैं इसे django दस्तावेज़ों में नहीं मिला। मैं भी यह समझने की कोशिश कर रहा था कि इसका उपयोग कैसे करें और अब आपको धन्यवाद। – iJK

+13

मैंने django स्रोत कोड के माध्यम से इसे पढ़कर इसे समझ लिया। मैं वास्तव में django के स्रोत में देखने की सिफारिश कर सकते हैं। यह समझने और अच्छी तरह से संरचित करने के लिए वास्तव में आसान है। –

+2

+1 मुझे पता था कि यह संपत्ति मौजूद थी। – russjman

1

हालांकि आप उल्लेख किया है कि आप उपयोग नहीं कर सकते आपके मामले में बहिष्कार, मुझे लगता है कि जो लोग इस उत्तर में आते हैं (जैसे कि शीर्षक पर आधारित), यह उपयोगी हो सकता है।

class ItemsAdmin(admin.ModelAdmin): 
    form = ItemsForm 
    actions = None 
    list_display = ('item_id', 'item_type', 'item_title', 'item_size', 'item_color',) 
    search_fields = ('item_id', 'item_title',) 
    inlines = [ImageInline,] 
    readonly_fields = ('disable_add_date','disable_remove_date',) 
    exclude = ('add_date', 'remove_date',) 
    ###.............