Ich stehe in einem Problem, bei dem mein Formular den Formularfeldwert bei einer fehlgeschlagenen Formularübermittlung nicht beibehält. Der Catch ist, dass ich möchte, dass es für den Benutzer sichtbar ist, dass sie keinen anderen Staat auswählen können (da es eine Website speziell für eine Stadt innerhalb des Staates ist), also habe ich es deaktiviert. Wenn ich dieses Widgetattribut entferne, behält es die Feldinformationen bei, sonst wird es zurückgesetzt und ich kann das Feld nicht bearbeiten, da ich es deaktiviert habe. Fordern Sie eine Abhilfe oder eine Empfehlung an. Code folgt.Behalten des Formularausgabefeldes in Django bei
forms.py
from django import forms
from django.core.exceptions import ValidationError
from django.forms import ModelForm
from .models import Resource
from localflavor.us.forms import USStateSelect
from localflavor.us.forms import USZipCodeField
import pickle
zips = pickle.load(open('../zips.p', "rb"))
def validate_zip(zip_code):
"""Ensure zip provided by user is in King County."""
if zip_code not in zips:
raise ValidationError(
'{} is not a valid King County zip code.'.format(zip_code),
params={'zip_code': zip_code},
)
class ResourceForm(ModelForm):
"""Form for editing and creating resources."""
zip_code = forms.IntegerField(validators=[validate_zip])
class Meta:
model = Resource
fields = ['main_category', 'org_name',
'description', 'street', 'city', 'state', 'zip_code', 'website',
'phone_number', 'image', 'tags']
labels = {
'org_name': 'Name of Organization',
'main_category': 'Main Categories',
}
help_texts = {
'main_category': 'The core services your organization provides.',
}
widgets = {
'state': USStateSelect(attrs={'disabled': True}),
}
models.py (Felder)
org_name = models.CharField(max_length=128)
description = models.TextField(max_length=512)
street = models.CharField(max_length=256, null=True, blank=True)
city = models.CharField(max_length=256, default='Seattle')
state = USStateField(default='WA')
zip_code = USZipCodeField(null=True, blank=True)
website = models.URLField(blank=True, null=True)
phone_number = PhoneNumberField()
tags = TaggableManager(blank=True)
image = models.ImageField(upload_to='photos', null=True, blank=True)
views.py (für diese Ansicht allein)
class CreateResource(LoginRequiredMixin, CreateView):
"""Class-based view to create new resources."""
template_name = 'searchlist/resource_form.html'
form_class = ResourceForm
success_url = reverse_lazy('home')
Können Sie Ihre Ansicht zeigen? –
Sorry, nur hinzugefügt. –