# модель автомобиля, на странице редактирования этой модели всё и происходит
class Car(ModelMeta, models.Model):
model = models.ForeignKey(
'CarModel', related_name='Cars', null=True, verbose_name="Модель",
on_delete=models.CASCADE)
title = models.CharField(
"Название", max_length=200, blank=True, null=True)
# ...
# поля для seo и логики, не имеющие отношения к задаче
# размеры автомобиля, находятся в TabularInline, я отобразил их на скриншоте
class CarVolume(models.Model):
l_name = models.IntegerField("№ длины")
h_name = models.IntegerField("№ высоты")
is_rear_drive = models.BooleanField("Задний привод")
length = models.IntegerField("Длина, см")
height = models.IntegerField("Высота, см")
kx = models.FloatField("Повышающий коэф.")
volume = models.FloatField("Объем")
car = models.ForeignKey(
'Car', on_delete=models.CASCADE, related_name='volumes',
verbose_name="Модификация")
# материал
class Material(models.Model):
title = models.CharField("Название", max_length=50)
description = models.TextField("Описание", blank=True)
used_for_walls_and_ceiling = models.BooleanField(
"Используется для стен и потолка")
used_for_floor = models.BooleanField("Используется для пола и арок")
# толщина материала
class MaterialThickness(models.Model):
thickness = models.FloatField("Толщина, мм")
material = models.ForeignKey(
'Material', related_name='thicknesses', verbose_name="Материал",
on_delete=models.CASCADE)
description = models.TextField("Описание", blank=True)
# повышающий коэффициент
# та самая сущность, которую я хочу редактировать в TabularInline для размеров автомобиля
class UpFactorForSizeAndThickness(models.Model):
"""повышающий коэффициент для толщины привязанный к размеру"""
price_factor = models.FloatField("Повышающий коэффициент", default=1)
size = models.ForeignKey(
'CarVolume', on_delete=models.CASCADE, null=True)
thickness = models.ForeignKey(
'MaterialThickness', on_delete=models.CASCADE)
На скриншоте - TabularInline для размеров. Я переопределил его шаблон, и теперь дополнительно вывожу поля для поля factor модели UpFactorForSizeAndThickness - те самые повышающие коэффициенты, привязанные к размеру и толщине.
Сейчас переопределяю метод save_model для страницы админки автомобиля, чтобы вручную из POST присваивать значения полям. Это оказалось довольно трудоёмко, поэтому пока почитаю про formset, но если сможете дать ответ, буду очень признателен.
На скриншоте - TabularInline для размеров. Я переопределил его шаблон, и теперь дополнительно вывожу поля для поля factor модели UpFactorForSizeAndThickness - те самые повышающие коэффициенты, привязанные к размеру и толщине.
Сейчас переопределяю метод save_model для страницы админки автомобиля, чтобы вручную из POST присваивать значения полям. Это оказалось довольно трудоёмко, поэтому пока почитаю про formset, но если сможете дать ответ, буду очень признателен.