python - Django:以表单保存多对多

标签 python django many-to-many

我有这样的模型:

嘉宾:

class Guest(models.Model):
    name = models.CharField(max_length=255)
    phone = models.CharField(max_length=255)
    # ...

和 session :

class Meeting(models.Model):
    # some fields ...
    guests = models.ManyToManyField(through='GuestOnMeeting')

可以有很多客人参加 session 。一位客人可以参加许多 session 。我们将存储一些相关的附加信息。所以,它通过某种模型是多对多的。

class GuestOnMeeting(models.Model):
    guest = models.ForeignKey(Guest)
    meeting = models.ForeignKey(Meeting)

    # ... some other fields

问题是:

  1. 如何定义一个表单来编辑 session 的 guest 列表(邀请 guest - 稍后我们将使用它来发送短信邀请 - 没有垃圾邮件, guest 几乎是我们的 friend ;)。

  2. 每个 guest 都有一个经理(manager = models.ForeignKey(Managers))。我如何修改此表单(或这些模型)以允许经理仅邀请链接到他们的客人(使用外键)?

最佳答案

如果您想要类似管理内联的内容,您正在寻找 inlineformset_factory .

>>> from django.forms.models import inlineformset_factory
>>> GuestOnMeetingInline = inlineformset_factory(GuestOnMeeting, Meeting)
>>> meeting = Meeting.objects.all()[0]
>>> form = MeetingForm(instance=meeting)
>>> formset = GuestOnMeetingInline(instance=meeting)

您可以添加fields或通过自定义forms和/或querysets到 modelformset_factory。

关于python - Django:以表单保存多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9736067/

相关文章:

mysql - 具有默认值的多对多数据库模式

python - 如果后面没有模式则匹配正则表达式

python - 如何在 Pandas 中扩展和创建以下数据集

python - 没有名为 _imagingft 的模块

jquery - 一个简单的 ajax 请求 post 为空

java - Hibernate:从连接表中删除孤立表

mysql - 类似 Google Reader 的应用程序的数据库模式和查询

python - 有没有办法在 pyqt5 或 qt5 中截取窗口的屏幕截图?

python - 如何创建用于在 python 中设置对象属性的模板函数?

Django grappelli 似乎无法查看其所有媒体文件