Отобразить раскрывающийся список внешнего ключа в форме Django в виде текста - PullRequest
0 голосов
/ 19 сентября 2019

Есть ли способ показать поле внешнего ключа в форме Django как текстовое поле только для чтения?

forms.py
class NewModelForm(forms.ModelForm):

    class Meta:
        model = Model
        fields = ['fk_field', 'other_field']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['fk_field'].widget.attrs['readonly'] = True #the dropdown is still active when this is set
        #self.fields['fk_field'] = forms.CharField(widget=forms.TextInput()) ##when I turn this on, I get an error that I am assigning to the wrong instance.

1 Ответ

0 голосов
/ 19 сентября 2019

Вы можете переопределить любое из ваших полей ModelForm, даже те, которые приходят из модели, просто установив его как атрибут класса, как вы это делали бы для обычного Form поля:

class NewModelForm(ModelForm):
    fk_field = forms.CharField(required=False, disabled=True)

    class Meta:
        model = MyModel
        fields = ['fk_field', 'other_field']

Опция disabled в поле устанавливает для ввода значение отключено.

Обратите внимание, что не следует доверять представленным данным, которые содержат правильное начальное значение для fk_field.Любой может отправить другой fk_field, если знает, как использовать curl или Почтальон, даже если <input> отключен.Так что, если вы просто проигнорируете какое-либо значение и установите для него правильное значение в вашем представлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...