2017-02-01 8 views
0

Я использую стандарт Django django.contrib.auth.models для реализации авторизации на моем веб-сайте. Я добавил поле NON-NULL email в таблицу DB auth_user. Проблема заключается в том, что в ORM Django email представляется нулевым. Другими словами, Django не уважает ненулевой атрибут поля БД в MySQL. Есть ли способ сообщить Django, что это поле требуется, как указано в БД, и чтобы отразить эту информацию при выполнении if field.required == True: проверки внутри метода формы __init__?Пользовательская пользовательская модель Django для учета БД ненужных меток

Мои модели и соответствующие формы выглядеть следующим образом:

class UserForm(forms.ModelForm): 

    def __init__(self, *args, **kwargs): 
     super(UserForm, self).__init__(*args, **kwargs) 
     for field_name, field in self.fields.items(): 
      if field.required == True: 
       field.widget.attrs['required'] = '' 
    class Meta: 
     model = User 
     fields = ('email', 'password',) 

ответ

1

Там нет необходимости делать что-либо. EmailFields хранятся как varchars и для пустых строк устанавливаются пустые строки, а не null.

Если вы хотите, чтобы сделать это требуется в форме, то сделать это в этом __init__ метод:

self.fields['email'].required = True 
+0

Нет, почему вы должны должны сделать это? –

+0

+++++++++++++++ 1. 'self.fields ['email']. required = ''' и 'self.fields ['email']. required = true' имеют разные функциональные возможности. Я понял это только сейчас! –