यदि आपके पास कोई फॉर्म है। मॉडल फ़ील्ड एक विकल्प फ़ील्ड के साथ, आप टेम्पलेट में इसे एक साधारण टेम्पलेट फ़िल्टर द्वारा पुन: संपादित कर सकते हैं।
forms.py
STATE_CHOICES = (
(10, 'NO'),
(4, 'YES'),
(18, 'Send to another Chemist for Review'),
(34, 'Send to another Market Expert for Review'),
(20, 'HOLD'),
)
new_state = forms.ChoiceField(
choices=STATE_CHOICES,
required=True,
)
टेम्पलेट:
{{ business_manager_form.new_state|filter_project_states:project }}
और यहाँ फिल्टर यह आत्म है।
@register.filter()
def filter_project_states(argv, project):
if project.department.id != 4:
argv.field.choices = [choice for choice in argv.field.choices if choice[0] != 34]
return argv
मुझे उम्मीद है कि इससे मदद मिलती है।
मुझे पता है कि यह पुराना है, लेकिन क्या यह निर्धारित करने का कोई तरीका है कि फ़ील्ड का चयन किया गया है या नहीं? –
सबसे पहले, कस्टम विजेट का उपयोग करते समय सावधान रहें, फ़ील्ड विकल्प और विजेट विकल्प समान नहीं हो सकते हैं। तो आपको "form.travels.field.widget.choices" का उपयोग करने की आवश्यकता होगी। –
दूसरा, कस्टम चयन के लिए यदि आप रेडियो विजेट का उपयोग कर रहे हैं, तो आपको फ़ील्ड मान के विरुद्ध प्रत्येक मान की जांच करनी होगी और जब वे मिलान करते हैं तो इनपुट को चेक करने के लिए सेट करना होगा। उदाहरण के लिए: "{% अगर form.travels.value = choice_id%} चेक =" चेक किया गया "{% endif%}"। –