Django get_initial方法,几个字段

时间:2017-05-16 08:14:22

标签: python django forms methods django-class-based-views

我有django应用,我想拥有日期字段的初始数据

promoted_from = models.DateTimeField(blank=True, null=True)
promoted_to = models.DateTimeField(blank=True, null=True)

我需要时间00:00。

在这个应用程序中,我有get_initial方法:

def get_initial(self):
    initial = super(BasePostEdit, self).get_initial()
    get = self.request.GET
    initial.update(get)
    if initial.get("pub_date", None):
        initial["pub_date"] = datetime.strptime(initial["pub_date"][0], "%d/%m/%Y")

    return initial

但我想要另外两个字段promoted_frompromoted_to。我试着用这种方式,没有成功:

def get_initial(self):
    initial = super(BasePostEdit, self).get_initial()
    get = self.request.GET
    initial.update(get)
    if initial.get("pub_date", None):
        initial["pub_date"] = datetime.strptime(initial["pub_date"][0], "%d/%m/%Y")

    if initial.get("promoted_from", None):
        initial["promoted_from"] = datetime.strptime(initial["promoted_from"][0], "%d/%m/%Y")

    return initial

请寻求帮助/一些提示。

1 个答案:

答案 0 :(得分:0)

您无需执行任何操作。您只需在字段本身上设置默认值:

promoted_from = models.DateTimeField(blank=True, null=True, default=datetime.datetime.now)
promoted_to = models.DateTimeField(blank=True, null=True, default=datetime.datetime.now)

修改

如果您需要自定义值,请使用callable作为默认值:

def midnight_today():
    return datetime.datetime.combine(datetime.date.today(), datetime.time(0,0))

...

promoted_from = models.DateTimeField(blank=True, null=True, default=midnight_today)

请注意,它应该是独立的功能,而不是模型的方法。