Установка вчера в качестве начальной даты в форме Джанго - PullRequest
5 голосов
/ 30 марта 2011

Я хочу установить начальную дату как вчера в форме 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

Но она просто отображает сегодняшнюю датукогда я смотрю на форму

Ответы [ 2 ]

7 голосов
/ 30 марта 2011

Вы можете установить начальное значение в ModelField, хотя тогда оно будет называться default.Я предполагаю, что вы хотите сделать это только в форме, и в этом случае вам понадобится что-то вроде:

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

Не забывайте, что вы не можете включить скобки после yesterday - простопередать вызов, иначе yesterday() будет оцениваться немедленно и не будет динамическим (см. нижнюю часть в этом разделе ).

0 голосов
/ 30 марта 2011

Я думаю, что вы определили инициал не в том месте (class Meta).

Насколько я понимаю, он должен быть установлен в качестве параметра поля, для которого вы пытаетесь установить начальное значение.

Проверьте документы: http://docs.djangoproject.com/en/dev/ref/forms/fields/#django.forms.Field.initial

Другой вариант - использовать параметр поля default в определении модели. См. Эту ветку для вдохновения: Проблемы с Django datetime (по умолчанию = datetime.now ())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...