以Django格式将昨天设置为初始日期

2024-05-14 17:35:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在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

但当我看表格的时候它只显示今天的日期


Tags: selftruereturnmodelsdefnulllengthmax
2条回答

我认为您在错误的地方定义了initial(class Meta)。

根据我的理解,应该将它设置为您试图设置初始值的字段的参数。

检查文档:http://docs.djangoproject.com/en/dev/ref/forms/fields/#django.forms.Field.initial

另一种选择是在模型定义中使用字段的default参数。 请看这篇文章以获得一些灵感:Django datetime issues (default=datetime.now())

您可以在ModelField中设置初始值,不过它将被称为default。我想你只想在表格上做,在这种情况下,你需要这样的东西:

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

别忘了,不能在yesterday后面包含括号——只要传递可调用的,否则yesterday()将立即求值而不是动态的(请参见this section的底部)。

相关问题 更多 >

    热门问题