【问题标题】:How to link two forms (wagtail form and django form) with a foreign key?如何用外键链接两种形式(wagtail 形式和 django 形式)?
【发布时间】:2021-05-18 10:27:33
【问题描述】:

我将 django 表单与 wagtail 表单结合使用。 django 表单将记录一些字段,这些字段将在这种类型的任何表单上:姓名、电子邮件和 wagtail 表单将记录由特定于该实例的表单页面创建者定义的额外数据。

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

以下代码在 form_submission.event_submission = a.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模型表单是这样的。我认为我在模型中的 ForeignKey 不正确,但我不知道。有什么帮助吗?

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()

【问题讨论】:

    标签: django forms foreign-keys wagtail


    【解决方案1】:

    我通过将我想要的额外字段(姓名、电子邮件)添加到 EventFormSubmission 并使用常规 django 表单(不是 ModelForm)来收集这些信息来解决这个问题。

    【讨论】:

      猜你喜欢
      • 2011-09-28
      • 2015-09-18
      • 2017-05-10
      • 1970-01-01
      • 1970-01-01
      • 2015-04-12
      • 2017-12-26
      • 2011-01-23
      • 1970-01-01
      相关资源
      最近更新 更多