2014-03-02 164 views
0

我預先填充表單字段是不是模型Django的預先填充表單字段使用ccbv的UpdateView

class AppointmentInputForm(forms.ModelForm): 
    start_date = forms.DateField(
     label='Date', required=True, input_formats=[DATE_FORMAT]) 
    start_time = forms.TimeField(
     label='Start Time', required=True, input_formats=[TIME_FORMAT]) 

的形式看起來像的一部分而不是模型的一部分:this

這裏start_time不是模型的一部分,只有start_date是。我做了createview,並使用datetime.combine將用戶輸入的時間和日期組合到單個日期時間,同時處理應用程序的時區。我現在做了相反的事情,從數據庫中提取日期時間,並將日期,時間組件放入單獨的文件中。

我的第一個想法是在def get_object中執行它,並將其放在obj.start_time中,假設它將填充在窗體上,而不是工作。幾點思考?

class AppointmentUpdateView(LoginRequiredMixin, UpdateView): 
    ... 
def get_object(self, queryset=None): 
    ... 
    obj = Appointment.objects.get(id=appointment_id) 
    conv_date = obj.start_date.astimezone(time_zone) 

    obj.start_time = conv_date.strftime(TIME_FORMAT) 

回答

2

你應該通過get_initial方法添加它,像:

class AppointmentUpdateView(LoginRequiredMixin, UpdateView): 
    # ... 

    def get_initial(self): 
     initial = super(AppointmentUpdateView, self).get_initial() 
     conv_date = self.get_object().start_date.astimezone(time_zone) 
     initial["start_time"] = conv_date.strftime(TIME_FORMAT) 
     return initial