0

以前は、モデルに個別の時間フィールドと日付フィールドがありましたが、タイムゾーンの問題により、1 つの DateTime フィールドに結合しようとしています。

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

私のフォームでは、それぞれの日時を抽出するために、時間用と日付用の 2 つの新しいフィールドを作成しました。

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)    

ただし、私のテンプレートではフィールドがレンダリングされません。の 2 行をコメント アウトすると__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 に答える