如何链接两个表单(wagtail表单和django表单)与一个外键?



我将django表单与wagtail表单结合使用。django表单会记录一些在这种类型的任何表单上都有的字段:name, email, wagtail表单会记录额外的数据,这些数据是由表单页面创建者针对该实例定义的。

我已经重载了serve方法来捕获两组数据,并且我可以处理这两个表单,但是当我试图添加逻辑来将表单内容相互关联,以便当一个提交集被删除时,另一个提交集也会被删除时,我就卡住了。我想我需要的是一个外键。

以下代码在form_submission处失败。event_submission = a.d id,我想从wagtail表单提交中获取id,并将其作为外键添加到django表单中,这样当wagtail表单部分被删除时,其他部分也会被删除,这样我就可以在两个表单提交之间有一个可用的链接。

def serve(self, request, *args, **kwargs):
if request.method == 'POST':
form = EventSignupForm(request.POST)
wagtail_form = self.get_form(request.POST, request.FILES, page=self, user=request.user)
if form.is_valid() and wagtail_form.is_valid():
a = self.process_form_submission(wagtail_form)
form_submission = form.save(commit=False)
form_submission.event_submission = a.id
form_submission.save()
return self.render_landing_page(request, form_submission, *args, **kwargs)
else:
form = EventSignupForm()
wagtail_form = self.get_form(page=self, user=request.user)
context = self.get_context(request)
context['form'] = form
context['wagtail_form'] = wagtail_form
return TemplateResponse(
request,
self.get_template(request),
context
)

表单提交类和django模型表单是这样的。我认为我在模型中的外键是不对的,但我不知道。任何帮助吗?

class EventFormSubmission(AbstractFormSubmission):
cancellation_id = models.CharField(max_length=7)
class EventSignup(models.Model):
"""
A model to contain signup info for an event: name, email.
"""
event_submission = models.ForeignKey(EventFormSubmission, on_delete=models.CASCADE)
name = models.CharField(max_length=100)
email = models.EmailField()

我通过在EventFormSubmission中添加我想要的额外字段(name, email)来解决这个问题,然后使用常规的django表单(不是ModelForm)来收集这些信息。

相关内容

最新更新