У меня есть модель, которая OneToOne связана с другой моделью.
class Vehicle(models.Model):
number = models.CharField(max_length=14)
class Seat(models.Model):
matierial = models.CharField(max_length=10)
vehicle = models.OneToOneField(Vehicle, on_delete=models.PROTECT)
def clean(self):
"""
This method is called before saving via admin panel
"""
if self.matierial == 'jute':
raise ValidationError(_('Jute products are not allowed through admin panel'))
Теперь я использую встроенную модель в панели администратора, как это
class SeatInlineAdmin(admin.StackedInline):
model = Seat
extra = 0
class VehicleAdmin(admin.ModelAdmin):
inlines = [SeatInlineAdmin]
Но у меня есть одна проблема,
Если транспортное средство v1
связано с сиденьем s1
, а сиденье s1
относится к jute
matierial, и я хочу изменить номер транспортного средства v1
из панели администратора, он выбрасываетмне ошибка говорит, что
'Jute products are not allowed through admin panel'
Итак, это означает, что он пытается сохранить модель Seat через InlineAdmin, когда я пытаюсь сохранить автомобиль.
Есть ли способ, которым яможно обойти clean()
метод при вызове из InlineAdmin?