Как определить дополнительное динамическое поле на основе поля модели 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()

Транзакция убеждается, что обе модели сохранены, или ни одна из них не сохранена.

Вернуться на верх