Доступ к скрытым входам в классе форм Django - PullRequest
0 голосов
/ 07 июля 2011

Требуется помощь для доступа к скрытым входам в форме clean_data или clean function.Невозможно найти решение здесь и Django docs после примерно 1 часа поиска.

class AccountForm(forms.ModelForm):

class Meta:
    model = Account
    #action = forms.CharField(widget=forms.HiddenInput()) <--- also tried this

    exclude = [
        "a_account_number"
    ]

# Validate that there isn't already an account that exists with a similar company name during account creation
def clean_a_company_name(self):
    logging.debug("Value of action %s") % self.data.__getitem__('action')

    if Account.objects.filter( a_company_name = self.cleaned_data['a_company_name']).exists() and % self.data.__getitem__('action')== 'create':
        logging.debug("In account views - form validation - clean_a_company - company already exists raising exception *****************")
        raise forms.ValidationError(u"An organization with this name and owner already exists. Change the Organization name or edit Organization Account information instead of creating a new Organization Account")
    return self.cleaned_data["a_company_name"]

Выше выдает ошибку Unicode.Я также попробовал:

%self.fields['action'] 

1 Ответ

0 голосов
/ 07 июля 2011

Итак, вы пытаетесь получить доступ к action полю в методе очистки a_company_name?У вас нет доступа к другому полю в чистом методе поля.Вы должны использовать метод clean формы.

Из документации django:

Метод clean () подкласса Form.Этот метод может выполнить любую проверку, которая требует доступа к нескольким полям из формы одновременно.Здесь вы можете указать, что, если поле A указано, поле B должно содержать действительный адрес электронной почты и т. П.

https://docs.djangoproject.com/en/dev/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other

...