Previously I had a separate Time Field and a Date Field in my Model, which I am now trying to join into one DateTime field, due timezone issues.
class Conversation(models.Model):
conversation_datetime = models.DateTimeField()
In my form I created two new fields one for time and another for date in order to extract the datetime in each accordingly.
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()
In my view I simply pass in the instance:
call = Conversation(conversation_datetime = datetime.datetime.utcnow().replace(tzinfo=utc))
form = CallsForm(instance=call)
However in my template the fields don’t get rendered. If I comment out the two rows in __init__, it gets perfectly rendered. What is wrong here?
# self.fields['conversation_date'] = self.instance.conversation_datetime.date()
# self.fields['conversation_time'] = self.instance.conversation_datetime.time()
You override your form fields. Probably you want to set initial value: