2011-03-30 12 views
5

मैं अपने कोड के रूप में एक Django में कल के रूप में प्रारंभिक तिथि निर्धारित करना चाहते हैं में प्रारंभिक तिथि के रूप में कल की स्थापना यहाँ है:एक Django फार्म

class Bilag(models.Model): 
dato = models.DateField() 
tekst = models.CharField(max_length=100) 
konto = models.CharField(max_length=10) 
avd = models.CharField(max_length=10, null=True,blank=True) 
avdnavn = models.CharField(max_length=30, null=True,blank=True) 
kasseid = models.CharField(max_length=10) 
belop = models.FloatField() 
def __unicode__(self): 
    return self.tekst 

class BilagForm(ModelForm): 
class Meta: 
    model = Bilag 
    widgets = { 
     'dato': SelectDateWidget() 
    } 
    initial = { 
     'dato': yesterday() 
    } 

और कल समारोह:

def yesterday(): 
    yesterday = (datetime.date.today() - datetime.timedelta(1)) 
    return yesterday 

लेकिन यह सिर्फ आज की तारीख को प्रदर्शित करता है जब मैं मुझे लगता है कि आप गलत जगह (class Meta) में प्रारंभिक परिभाषित प्रपत्र

उत्तर

6

आप मॉडल फ़ील्ड में प्रारंभिक मान सेट कर सकते हैं, हालांकि इसे default कहा जाएगा। मुझे लगता है कि आप केवल रूप है, जो मामले में आप की तरह कुछ आवश्यकता होगी पर यह क्या करना चाहते हैं:

class BilagForm(forms.ModelForm): 
    dato = forms.DateField(widget=SelectDateWidget(), initial=yesterday) 
    class Meta: 
     model = Bilag 

भूल जाते हैं कि आप yesterday के बाद कोष्ठकों शामिल नहीं कर सकते मत करो - बस प्रतिदेय गुजरती हैं, अन्यथा yesterday() तुरंत और नहीं मूल्यांकन किया जाएगा गतिशील होना (this section के नीचे देखें)।

+0

धन्यवाद, यही कारण है कि चाल किया – Kracobsen

0

को देखो।

मेरी समझ से यह क्षेत्र आपके लिए प्रारंभिक मूल्य निर्धारित करने की कोशिश कर रहे हैं की एक पैरामीटर के रूप में स्थापित किया जाना चाहिए।

चेक डॉक्स: http://docs.djangoproject.com/en/dev/ref/forms/fields/#django.forms.Field.initial

एक अन्य विकल्प अपने मॉडल परिभाषा क्षेत्र के default पैरामीटर का उपयोग करना होगा। कुछ प्रेरणा के लिए यह धागा देखें: Django datetime issues (default=datetime.now())

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