2016-12-21 9 views
1

DateTimeWidgetと初期値をモデルのDue_dateフィールドに追加しようとしています。何を試しても、私のModelFormクラスで宣言されたフィールドをモデルの既存のフィールドをオーバーライドすることはできません。Django ModelFormのモデルフィールドをオーバーライドできません

https://docs.djangoproject.com/en/1.9/topics/forms/modelforms/#overriding-the-default-fields

私は別にウィジェットを追加した場合、それは動作しますが、その後、私はモデルのデフォルトを設定しない限り、初期値を追加する方法を知りません。誰かが間違っていることを指摘できますか?

from django import forms 

import datetime 
from datetimewidget.widgets import DateTimeWidget 


from .models import EstRequest 


def due_date(): 
    due_date = (datetime.datetime.now() + datetime.timedelta(days=1)) 
    return due_date 


class EstRequestModelForm(forms.ModelForm): 

    class Meta: 
     model = EstRequest 
     due_date = forms.SplitDateTimeField(widget=forms.SplitDateTimeWidget, initial=due_date) 

     fields = [ 
      'market', 
      'plan', 
      'builder', 
      'due_date', 
      'notes', 
     ] 

     # widgets = { 
     #  # Use localization and bootstrap 3 
     #  'due_date': DateTimeWidget(attrs={'id': "due_date"}, usel10n=True, bootstrap_version=3) 
     # } 

答えて

2

あなたは間違った場所にフィールドをdefinfingている実際には、それはMetaクラスの外にする必要があります:

class EstRequestModelForm(forms.ModelForm): 

    due_date = forms.DateTimeField(widget=forms.DateTimeInput, initial=due_date) 

    class Meta: 
     model = EstRequest 
     fields = [ 
      'market', 
      'plan', 
      'builder', 
      'due_date', 
      'notes', 
     ] 
+0

私は、このような愚か者のように感じます!それを指摘していただきありがとうございます! – whieronymus

関連する問題