Как определить дополнительное динамическое поле на основе поля модели Foreign Key в django
Я пытаюсь сделать дополнительное поле отображения в форме, которое принимало бы значение на основе изменения поля связанной таблицы.
предполагать
model.py
# Create model.py
class MyModel(models.Model):
name = models.CharField()
model2 = models.ForeignKey(MyModel2)
class MyModel2(models.Model):
name = models.CharField()
description = models.CharField()
forms.py
# Create forms.py
class MyForm(forms.ModelForm):
extraField = forms.CharField(disabled=True)
class Meta:
model = MyModel
field = '__all__'
В данном конкретном extraField
. Мне нужно связать это поле со значением model2.description
.
Есть ли способ сделать это.
Хотите ли вы установить mymodel2.description в дополнительное поле формы на form_valid? Если да, то:
В вашем представлении (я предполагаю, что представление основано на классах):
def form_valid(self, form):
with transaction.atomic(): # in case model2 save fails
instance = form.save()
instance.model2.description = form.cleaned_data['extrafield']
instance.model2.save()
Транзакция убеждается, что обе модели сохранены, или ни одна из них не сохранена.