我有两个课程-事件和回合。回合对事件具有外键约束,因此回合已绑定到事件。
现在要创建回合,我有以下路线
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(VALUES(id));
并进入一回合
<slug:slug_event>/new/
要保存回合,我需要声明一个事件。所以在我的round / views.py中,我有
<slug:slug_event>/<int:pk_round>/
,我可以选择该回合将附加到的事件。 但我不想有该事件字段,因为该事件已在URL中给出。 所以我想要类似的东西
fields = [..., 'event']
所以我不需要指定事件“两次”。
答案 0 :(得分:1)
您可以使用URL中的链接从数据库中获取事件:
def form_valid(self, form):
event = get_object_or_404(Event, slug=self.kwargs['slug_event'])
form.instance.event = event
return super().form_valid(form)
现在您可以从表单的字段中删除“事件”。
请注意,如果事件不存在,get_object_or_404
将显示404页面。您可能还希望对GET请求执行get_object_or_404
,以免用户填写无效的表单,然后收到404错误。