【发布时间】:2023-03-04 10:31:01
【问题描述】:
我正在使用 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 以以下形式打开:
并且生成的示例 URL 是: http://127.0.0.1:8000/calendar/create?start_date=2017-10-25&end_date=2017-10-25start_time=4:00%20PM&end_time=5:00%20PM
这就是我卡住的地方。在 stackoverflow 上呆了几天,在谷歌上搜索,并尝试了很多事情,我相信解决方案涉及 views.py 中的 get_form_kwargs 或 get_context_data 或 form_valid 但有可能我只是混淆了自己试图解决这个问题.任何能让我走上正轨的帮助都将不胜感激!
【问题讨论】:
-
您不必做任何事情,
CreateView应该会自动处理它们。你遇到了什么问题? -
嗨,塞尔丘克,感谢您的回复。问题是我想将 4 个 URL 参数传递给表单,但表单只是加载了这些字段中没有值。例如,在提供的屏幕截图中,start_date 字段将默认为 25/10/2017,使用示例 URL
标签: django django-forms django-class-based-views