2016-03-06 1 views
0

Я пытаюсь создать собственный класс Employee, который использует аутентификацию по умолчанию. Я могу успешно зарегистрировать, но поля, связанные с классом пользователя Django, хранятся в User, тогда как мои пользовательские поля хранятся в Employee. Как я могу получить все, что хранится в Employee?Данные хранятся в пользовательском классе вместо UserProfile

Это мой forms.py:

class UserForm(forms.ModelForm): 
    password = forms.CharField(widget=forms.PasswordInput()) 

    class Meta: 
     model = User 
     fields = ('username', 'first_name', 'last_name', 'email', 'password') 

class EmployeeForm(forms.ModelForm): 
    class Meta: 
     model = Employee 
     fields = ('sales', 'hours') 

И мой models.py:

class Patient(models.Model): 
    user = models.OneToOneField(User) 
    sales = models.CharField(max_length=30) 
    hours = models.CharField(max_length=30) 

Как я уже сказал, я бы предпочел использовать проверку подлинности по умолчанию и, следовательно, избежать использования пользовательского бэкенд

+0

Что-то вроде 'class Employee (AbstractBaseUser, PermissionsMixin): ... objects = UserManager()' может сделать трюк. https://docs.djangoproject.com/en/1.9/topics/auth/customizing/ – WayBehind

ответ

0

То, что вы используете, обычно называется профилем пользователя, который не будет хранить добавленные поля в той же таблице (которые вы обнаружили). Информацию об этом можно найти в Extending existing user model.

Что вы хотите сделать (и метод, который я обычно должен использовать в своих проектах): Substitute a custom user model. Это немного сложнее, но как только вы получите это, это не так уж плохо. Это позволит вам хранить все поля пользователя в одной таблице, а не в отдельных таблицах/моделях.

Смежные вопросы