私はdjango-nested-inlinesを使用して、これら 3 つのモデルの管理者にネストされたインラインを提供しています。
class Venue(models.Model):
name = models.CharField(max_length=100)
class VenueBookingSetting(models.Model):
venue = models.ForeignKey(Venue)
name = models.CharField(max_length=100, default='')
use_date_range = models.BooleanField(default=False)
use_valid_days = models.BooleanField(default=False)
days_in_advance = models.SmallIntegerField(default=DEFAULT_DIA)
max_covers = models.SmallIntegerField(default=0, blank=True)
active = models.BooleanField(default=False)
class VenueValidBookingDays(models.Model):
booking_setting = models.ForeignKey(VenueBookingSetting)
sunday = models.BooleanField(default=True)
monday = models.BooleanField(default=True)
tuesday = models.BooleanField(default=True)
wednesday = models.BooleanField(default=True)
thursday = models.BooleanField(default=True)
friday = models.BooleanField(default=True)
saturday = models.BooleanField(default=True)
これは、Venue の私の管理者設定です。
class VenueBookingValidDaysInline(NestedTabularInline):
model = VenueBookingValidDays
class VenueBookingSettingInline(NestedTabularInline):
model = VenueBookingSetting
inlines = [VenueBookingValidDaysInline,]
class VenueAdmin(NestedModelAdmin):
inlines = [VenueBookingSettingInline,]
私が抱えている問題は、親の予約設定を入力せずに予約日を追加した場合に IntegrityError をキャッチする場所ですか? つまり、有効な日のいくつかのチェックを外しますが、親の予約設定項目は変更しません。ページが 500 エラーでクラッシュするのではなく、検証メッセージを表示するためにそのエラーをキャッチする必要がある場所を教えてもらえますか?