Как фильтровать столбцы для каждого в одной модели в админке Django

У меня есть модель под названием Product. Я использую StackedInline для отображения ProductCostCalculator в моей панели администратора.

Проблема, с которой я столкнулся, заключается в том, что в моей модели ProductCostCalculator будет 20+ столбцов. Некоторые столбцы из ProductCostCalculator не нужны в каждом элементе модели Product, поэтому я хочу исключить все столбцы, которые не нужны. Я знаю, что могу просто поставить 0 или '-' по умолчанию и вставить значения в нужные столбцы в панели администратора, но я хотел бы сделать это более динамичным, чтобы пользователю, который будет добавлять компоненты калькулятора, не приходилось делать это вручную.

Например, я хочу добавить 2 элемента к моей модели Product. Назовем их Item 1 и Item 2. В Item 1 мне нужно будет вставить значения в field_1, field_2 и field_3. В Item 2 в моей модели Product мне нужно будет вставить значения только для field_3, field_4 и field_5.

Вопрос:

Как я могу назначить колонку из ProductCostCalculator элементу в модели Product или как я могу отфильтровать все колонки, которые не нужны в конкретном элементе в модели Product. Я не уверен, что что-то подобное возможно, поэтому я ищу несколько советов.

models.py

class Product(models.Model):
    title = models.CharField(max_length=400, blank=False, null=False, help_text='max 400 characters', default='')
    last_updated = models.DateTimeField(auto_now=True)
    publish = models.DateTimeField('Published on', default=timezone.now)

class CalculatorComponent(models.Model):
    service = models.CharField(max_length=500, default='', blank=True)
    product = models.ManyToManyField(Product, related_name='calculator_service_component_product', blank=True, default='-')
    component = models.CharField(max_length=500, default='', blank=True)
    body = models.TextField(default='', blank=True)

class ProductCostCalculator(models.Model):
    component = models.ForeignKey(CalculatorServiceComponent, on_delete=models.CASCADE, default=1)
    related_product = models.ForeignKey(Product, on_delete=models.CASCADE, null=True, blank=True)
    field_1= models.CharField(max_length=125, choices=LANGUAGES, default='-')
    field_2 = models.FloatField(default=0)
    field_3 = models.IntegerField(default=0)
    field_4=  models.FloatField(default=0.0)
    field_5 = models.FloatField(default=0.0)

admin.py

class ProductCostCalculatorInline(admin.StackedInline):
    model = ProductCostCalculator

class ProductAdmin(ImportExportModelAdmin):
    inlines = [ProductCostCalculatorInline,]
    resource_class = ProductResource
Вернуться на верх