これらのモデルを考えてみましょう
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)