让我们考虑这些模型
class Session(models.Model):
staff = models.ForeignKey(User, verbose_name='Supplier')
start_time = models.DateTimeField(_('start'))
end_time = models.DateTimeField(_('end'))
class Participation(models.Model):
session = models.ForeignKey(Session)
atendee = models.ForeignKey(User, verbose_name='Attendee')
class Meta:
unique_together = ('session', 'attendee')
我正在使用内联表单集来管理编辑器Participations
。Session
想象以下场景:
- 我添加了参加者的参与
- 删除此参与(选中删除复选框)
- 将其添加回相同的与会者(新行)
如果我发送这个表单集,我会收到一个约束错误
已存在此会话和与会者的参与。
似乎验证没有考虑到已删除的孩子。
它被认为是一种正常的行为吗?
在那种情况下,我该如何妥善处理这种情况?
为了重现此行为,请将管理站点与这些管理类一起使用:
class PartInline(admin.TabularInline):
model = Participation
class SessionAdmin(admin.ModelAdmin):
inlines = [PartInline]
admin.site.register(Session, SessionAdmin)