2015-08-04 2 views
0

У меня есть три разных типа пользователей в моем проекте. Три модели имеют OneToOneField с моделью пользователя.Как добавить поле в пользовательскую модель Django?

Во многих случаях я хочу выяснить, какой из трех типов пользователь. Есть ли быстрый способ сделать это?

Я собираюсь добавить поле в модель пользователя, но не знаю, как это можно сделать.

+0

Если вы просто хотите, чтобы различать три вида пользователей, вы могли бы быть лучше только с помощью групп пользователей (встроенная), а также тест на membershi п. – henrikstroem

ответ

0

Чтобы расширить модель User с помощью дополнительных полей, вы можете использовать модель AbstractUser. Это предоставит вам все поля User, такие как username, email и т. Д. Затем добавьте все дополнительные поля в MyUser.

Вам нужно сделать что-то вроде:

models.py

from django.contrib.auth.models import AbstractUser 

class MyUser(AbstractUser): 
    my_extra_field = .. # your extra field 

Это обеспечит все User поля вместе с дополнительным полем имени my_extra_field в MyUser модели.

+0

Спасибо. Как связать трех типов пользователей с абстрактной моделью? – Brian

+0

Вы можете связать 3 модели с моделью «MyUser», используя «OneToOneField». –

0

Если вы хотите добавить выбор, какой пользователь это, я хотел бы попробовать что-то вроде этого: https://docs.djangoproject.com/en/1.8/ref/models/fields/#choices

class Student(models.Model): 
    FRESHMAN = 'FR' 
    SOPHOMORE = 'SO' 
    JUNIOR = 'JR' 
    SENIOR = 'SR' 
    YEAR_IN_SCHOOL_CHOICES = (
     (FRESHMAN, 'Freshman'), 
     (SOPHOMORE, 'Sophomore'), 
     (JUNIOR, 'Junior'), 
     (SENIOR, 'Senior'), 
    ) 
    year_in_school = models.CharField(max_length=2, 
             choices=YEAR_IN_SCHOOL_CHOICES, 
             default=FRESHMAN) 

    def is_upperclass(self): 
     return self.year_in_school in (self.JUNIOR, self.SENIOR) 
Смежные вопросы