0

以前我的模型中有一个单独的时间字段和一个日期字段,由于时区问题,我现在正试图将它们加入一个日期时间字段。

class Conversation(models.Model):
    conversation_datetime = models.DateTimeField()    

在我的表单中,我创建了两个新字段,一个用于时间,另一个用于日期,以便相应地提取每个字段中的日期时间。

class CallsForm(ModelForm):       
    conversation_date = forms.DateField(localize=True, widget=forms.DateInput())
    conversation_time = forms.TimeField(localize=True, widget=forms.TimeInput())

    def __init__(self, *args, **kwargs):
        super(CallsForm, self).__init__(*args, **kwargs)
        self.fields['conversation_date'] = self.instance.conversation_datetime.date()
        self.fields['conversation_time'] = self.instance.conversation_datetime.time()

在我看来,我只是传入实例:

call = Conversation(conversation_datetime = datetime.datetime.utcnow().replace(tzinfo=utc))
form = CallsForm(instance=call)    

但是在我的模板中,字段不会被渲染。如果我注释掉 中的两行__init__,它就会完美呈现。这里有什么问题?

   # self.fields['conversation_date'] = self.instance.conversation_datetime.date()
   # self.fields['conversation_time'] = self.instance.conversation_datetime.time()
4

1 回答 1

1

您覆盖表单字段。可能你想设置初始值:

self.fields['conversation_date'].initial = self.instance.conversation_datetime.date()
self.fields['conversation_time'].initial = self.instance.conversation_datetime.time()
于 2012-08-29T20:00:07.407 回答