Django - formset unique_together删除添加

时间:2012-11-23 12:04:50

标签: python django unique-constraint django-forms

让我们考虑一下这些模型

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

我正在使用内联formset来管理Participations Session编辑器。

想象一下以下场景:

  • 我与参加者一起添加参与
  • 删除此参与(选中删除复选框)
  • 使用相同的与会者(新行)添加回来

如果我发送此formset,我将收到一个约束错误

  

本次会议和与会者的参与已经存在。

似乎验证不会将删除的孩子考虑在内 它被认为是正常行为吗? 在那种情况下,我该如何妥善管理这个案子?


要重现此行为,请使用具有以下管理类的管理站点:

class PartInline(admin.TabularInline):
    model = Participation

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

admin.site.register(Session, SessionAdmin)

0 个答案:

没有答案