问题
How do I make a foreign key field in a form read only but still allow this field to be recognized as valid once the form is submitted? According to W3C, disabled fields are left out once the form is submitted....using the code below, I can set the field as disabled, thus readonly, but my form doesn't go through
    def __init__(self, *args, **kwargs):
       super(IssuesForm, self).__init__(*args, **kwargs)
       self.fields['vehicle'].widget.attrs['readonly'] = True
Ideas....?
回答1:
I don't know the Django or Python syntax, however, an input field of type="hidden" might be what you're looking for. If you wanted to still display the value using a disabled field, you could do that too, and rely on the hidden field for the actual value.
回答2:
Maybe I can try the hidden field...I knew this was a possibility, but I wanted to be sure there was no other way
回答3:
I've had this problem and I used JavaScript to solve
回答4:
I came across this question after many other solutions didn't seem to work. Here's example code of how I got it work successfully using the "hidden" suggestion, in case it's helpful to anyone else.
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
        ...
    来源:https://stackoverflow.com/questions/1105507/make-a-foreign-key-field-in-a-django-form-read-only-and-still-enable-the-form-t