假设我有Person
模型以及Event
模型。
事件与人物有ManyToMany
的关系
class Event(models.Model):
canceled_persons = models.ManyToManyField('Person', related_name='canceled')
confirmed_persons = models.ManyToManyField('Person', related_name='confirmed')
no_response = models.ManyToManyField('Person', related_name='no_response')
创建活动时,它会向一组选定的人发送一封电子邮件,其中包含用于点击以更新其状态的链接。默认情况下,它们都列在“no_response”中。除了通过电子邮件更新,他们可以打电话,联系人代表可以更新他们的状态。
我的问题是我应该如何设置表单以便一次更新多个表单。我的第一个想法是为每个捐赠者提供一个表单,并在canceled, confirmed, no_response
的名称旁边放置单选按钮,在底部有一个保存按钮
我应该使用来自Person的modelformset_factory还是来自Event?或者我是否更容易忽视某些事情?
答案 0 :(得分:0)
我的设计模型略有不同。 Event
模型应包含事件的详细信息。一个单独的课程说“预订”应该处理Person
和Event
之间的关系。通过这种方式,您可以更好地管理状态,而无需管理多个“多对多”关系。例如,
class Event(model.Models):
name = model.CharField(max_length=100)
class Booking(model.Models):
BOOKING_STATES = (
("CAN", "Cancelled"),
("CON", "Confrimed"),
("NOR", "No Response"),
)
event = model.ForeignKey(Event)
person = model.ForeignKey(Person)
booking_status = model.CharField(max_length=3, choices=BOOKING_STATES)
这样也可以轻松构建一个formset。