2012-02-17 21 views
12

मैं कैसे Django में ठीक से निम्नलिखित स्थिति से निपटने के यह पता लगाने की प्रतीत नहीं कर सकते हैं:Django में एक फॉर्म फ़ील्ड के रूप में दो मॉडल फ़ील्ड का प्रतिनिधित्व कैसे करें?

मैं एक मॉडल में एक तिथि सीमा है, जो मैं दो अलग-अलग क्षेत्रों, date_start और date_end के रूप में संग्रहीत है:

start_date = models.DateTimeField() 
end_date = models.DateTimeField() 

इस मॉडल के लिए रूप में, मैं एक लेबल के साथ एक क्षेत्र के रूप में इस का प्रतिनिधित्व करना चाहते हैं:

timespan = forms.Field(widget=widgets.SelectDateRangeWidget(), label="Date Range") 

यह अब के रूप में, मैं ext समाप्त हो गया MultiWidget SelectDateRangeWidget बनाने के लिए:

class SelectDateRangeWidget(forms.MultiWidget): 
    ... 

कौन सा फिर दो Date विगेट्स को शामिल किया गया। मैं इसका उपयोग करना चाहता हूं, लेकिन फिर इसे दो अलग-अलग मॉडल फ़ील्ड में साफ़ कर दूं, और फॉर्म फ़ील्ड में प्रारंभिक डेटा लोड करने की क्षमता को भी सुरक्षित रखूंगा। initial मैन्युअल रूप से उन दो फ़ील्ड के मान पर सेट करने का एकमात्र तरीका है, शायद __init__ फ़ॉर्म के फ़ंक्शन में, और इसे मैन्युअल रूप से उन दो मॉडल फ़ील्ड में साफ़ करें, या वहां एक क्लीनर (बोलने के लिए) तरीका है यह करो?

+0

मुझे नहीं पता कि समस्या क्या है: अपनी दो तिथियां निकालें, और उन्हें मॉडल में स्टोर करें। – Marcin

+0

@marcin: मैं दो मॉडल फ़ील्ड के मान में 'प्रारंभिक' मान कैसे सेट करूं जो इस तरह से समझ में आता है और फॉर्म के __init__ फ़ंक्शन को हैक नहीं करता है? क्या मैं बस कुछ स्पष्ट याद कर रहा हूँ? –

+0

प्रत्येक फ़ील्ड में 'प्रारंभिक' पैरामीटर सेट करने में क्या गड़बड़ है? – Marcin

उत्तर

10

ऐसा लगता है कि वर्तमान विजेट्स API का उपयोग करके django में यह संभव नहीं है। टिकट सबसे पुराने डीजेंगो टिकटों में से एक है, यह 7 साल का है: https://code.djangoproject.com/ticket/27

आप मॉडल फॉर्म से मूल 2 फ़ील्ड को बाहर कर सकते हैं, एक नया फ़ील्ड बना सकते हैं और फॉर्म की सेव विधि को ओवरराइड कर सकते हैं।

+2

धन्यवाद! विश्वास नहीं कर सकता मैं एक अनुरोध पर ठोकर खाई कि प्राचीन और अभी भी अनसुलझा –

+0

क्या आप जानते हैं कि इसका नवीनतम अपडेट क्या है? – Algorithmatic

संबंधित मुद्दे