我正在使用Django 1.11,我很难理解如何使用CreateView Class将URL参数传递给ModelForm。我在URL(start_date,end_date,start_time,end_time)中有4个参数,我试图将其传递给表单中的相关字段。如果有人能指出我正确的方向来弄清楚如何解决这个问题,我真的很感激!
使用我的html文件中的以下函数创建URL:
window.location.assign("/calendar/create?start_date="+start.format("YYYY-MM-DD")+"&end_date="+end.format("YYYY-MM-DD")+"start_time="+start.format("h:mm A")+"&end_time="+end.format("h:mm A"));
这将从urls.py开始:
url(r'^calendar/create',views.CalendarCreate.as_view(),name='calendar_create'),
来自views.py的:
class CalendarCreate(CreateView):
model = Event
form_class = EventForm
来自forms.py:的
class EventForm(ModelForm):
class Meta:
model = Event
到目前为止,我的event_form.html以以下形式打开:
这是我被困的地方。从这里花费了很多天在stackoverflow,谷歌搜索和尝试了很多事情我相信解决方案涉及get_form_kwargs
中的get_context_data
或form_valid
或views.py
但我有可能只是混淆了自己试图解决这个问题。任何有助于我走上正确轨道的帮助将不胜感激!
答案 0 :(得分:3)
class CalendarCreate(CreateView):
model = Event
form_class = EventForm
def get_initial(self):
initial = {}
for x in self.request.GET:
initial[x] = self.request.GET[x]
print(initial)
return initial
请注意'start_date'
request.GET
'start_date'
中Event
模型中的TF_VAR
字段是否TF_VAR
,并注意时间格式为vaild。
答案 1 :(得分:-1)
也许您需要Meta类中的fields属性?
来自doc - https://docs.djangoproject.com/en/1.11/topics/forms/modelforms/
# Create the form class.
class ArticleForm(ModelForm):
class Meta:
model = Article
fields = ['pub_date', 'headline', 'content', 'reporter']