Как создать имя класса в django formset динамически на основе значения foreignkey?
Как я могу передать значение из поля slug из модели Product
в мой набор форм и создать динамическое имя класса, которое будет содержать это значение?
Мне удалось создать фиксированное имя класса form-control
в каждой форме, но я не знаю, как сделать динамический класс, чтобы он создавал slug, который является полем в модели Product
.
Когда я вставляю "class": self.related_product
, это дает мне ошибку 'CalculatorForm' object has no attribute 'related_product'
. Мой вопрос в том, что я должен вставить сюда, чтобы получить значение slug?
forms.py
class CalculatorForm(forms.ModelForm):
author = forms.CharField(widget = forms.HiddenInput(), required = False)
created = forms.DateTimeField(widget = forms.HiddenInput(), required = False)
number_of_units = forms.IntegerField(min_value=0)
total_price = forms.IntegerField(widget = forms.HiddenInput(), required = False)
class Meta:
model = CERequest
fields = ('author', 'created', 'related_product', 'related_component', 'number_of_units')
def __init__(self, *args, **kwargs):
super(CalculatorForm, self).__init__(*args, **kwargs)
for field in self.fields:
new_data = {
"class": 'form-control' #how to pass slug value here?
}
self.fields[str(field)].widget.attrs.update(
new_data
)
RequestFormset = formset_factory(CalculatorForm, extra=0, can_delete=False)
models.py
class CERequest(models.Model):
author = models.CharField(max_length=255, blank=True, null=True)
related_component = models.ForeignKey(CostCalculator, on_delete=models.CASCADE)
number_of_units = models.IntegerField(default=0)
related_product = models.ForeignKey(Product, on_delete=models.CASCADE)
class Product(models.Model):
...
slug = models.SlugField(max_length=250)