Сделайте поле внешнего ключа в форме django доступным только для чтения и по-прежнему разрешайте отправку формы

Как сделать поле внешнего ключа в форме только для чтения, но при этом разрешить распознавать это поле как действительное после отправки формы? Согласно W3C, отключенные поля не учитываются после отправки формы.... используя приведенный ниже код, я могу установить поле как отключенное, то есть только для чтения, но моя форма не проходит

    def __init__(self, *args, **kwargs):
       super(IssuesForm, self).__init__(*args, **kwargs)
       self.fields['vehicle'].widget.attrs['readonly'] = True

Идеи....?


person Community    schedule 09.07.2009    source источник


Ответы (4)


Я не знаю синтаксиса Django или Python, однако поле ввода type="hidden" может быть тем, что вам нужно. Если вы хотите по-прежнему отображать значение с помощью отключенного поля, вы также можете сделать это и полагаться на скрытое поле для фактического значения.

person Terry G Lorber    schedule 09.07.2009

Я столкнулся с этим вопросом после того, как многие другие решения, похоже, не сработали. Вот пример кода того, как я успешно заработал, используя «скрытое» предложение, на случай, если это будет полезно кому-то еще.

class EditExifForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(EditExifForm, self).__init__(*args, **kwargs)
        self.fields['image'].widget.attrs['hidden'] = True    # This is the solution
        # Setting as 'readonly' didn't make a difference
        # Setting as 'disabled' made the form not update the database

    class Meta:
        model = exif
        ...
person Bird    schedule 21.05.2019

Может быть, я могу попробовать скрытое поле... Я знал, что это возможно, но я хотел быть уверен, что другого пути нет.

person Community    schedule 09.07.2009

У меня была эта проблема, и я использовал JavaScript для решения

person vncprado    schedule 09.08.2009