我正在使用 Django 1.11,并且我正在努力理解如何使用 CreateView 类将 URL 参数传递到 ModelForm。我在 URL 中有 4 个参数(start_date、end_date、start_time、end_time),我试图将它们传递到表单中的相关字段。如果有人能指出我正确的方向来解决这个问题,我将非常感激!
URL 是使用我的 html 文件中的以下函数创建的:
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
但有可能我只是在尝试解决这个问题时感到困惑。任何帮助我走上正轨的帮助将不胜感激!
最佳答案
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
请注意,如果 request.GET
中的 'start_date'
,您的 Event
中必须具有相同的字段 'start_date'
> 模型,注意时间格式有效。
关于Django 1.11 CreateView传递URL参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46900861/