Как проверить / очистить () уникальное = True поле без использования ModelForm?
В пользовательской форме, как проверить модельполе 'с уникальностью (то есть, имеетunique=True
задавать)?
Я знаю, что ДжангоModelForm автоматически выполняетvalidate_unique()
функция, которая вызывается в BaseModelFormclean()
метод - так, при использовании ModelForm, это будет обрабатываться правильно (как в Admin).
Тем не менее, я создаю свою собственную форму с нуля и удивляюсь, как я могу справиться с этим самостоятельно? Я думаю, что мой самый большой камень преткновения - это знание, какой объект прикреплен к форме при очистке данных ...
Некоторый код:
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