¿Cómo validar / limpiar () un campo único = verdadero sin usar un ModelForm?
En un formulario personalizado, ¿cómo se valida la singularidad de un campo de un modelo (es decir, tieneunique=True
conjunto)?
Sé que ModelForm de django realiza automáticamente unavalidate_unique()
Función que se llama dentro de la BaseModelForm'sclean()
Método: por lo tanto, cuando se usa ModelForm, esto se manejará correctamente (como en el Administrador).
Sin embargo, estoy creando mi propia forma desde cero y me pregunto cómo puedo manejar esto yo mismo. Creo que mi mayor obstáculo es saber qué objeto se adjunta al formulario cuando se limpian los datos ...
Algún código:
class UserProfile(CreatedModifiedModel):
user = models.ForeignKey(User, unique=True)
display_name = models.CharField('Display Name',max_length=30,
blank=True,unique=True)
class EditUserProfileForm(forms.Form):
display_name = forms.CharField(required=False,max_length=30)
# "notifications" are created from a different model, not the UserProfile
notifications = forms.MultipleChoiceField(
label="Email Notifications",
required=False,
widget=forms.CheckboxSelectMultiple,)
def clean_display_name(self):
# how do I run my own validate_unique() on this form?
# how do I know which UserProfile object I am working with?
# more code follows, including the __init__ which sets up the notifications