之前我的模型中有一个单独的时间字段和一个日期字段,我现在正尝试加入一个DateTime字段,因为时区问题。
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()
答案 0 :(得分:1)
您覆盖表单字段。可能你想设置初始值:
self.fields['conversation_date'].initial = self.instance.conversation_datetime.date()
self.fields['conversation_time'].initial = self.instance.conversation_datetime.time()