4

让我们考虑这些模型

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

我正在使用内联表单集来管理编辑器ParticipationsSession

想象以下场景:

  • 我添加了参加者的参与
  • 删除此参与(选中删除复选框)
  • 将其添加回相同的与会者(新行)

如果我发送这个表单集,我会收到一个约束错误

已存在此会话和与会者的参与。

似乎验证没有考虑到已删除的孩子。
它被认为是一种正常的行为吗?
在那种情况下,我该如何妥善处理这种情况?


为了重现此行为,请将管理站点与这些管理类一起使用:

class PartInline(admin.TabularInline):
    model = Participation

class SessionAdmin(admin.ModelAdmin):
    inlines = [PartInline]

admin.site.register(Session, SessionAdmin)
4

0 回答 0