Django用户和AbstractBaseUser

时间:2015-09-17 23:09:01

标签: python django authentication

我正在创建一个包含用户个人资料的网站,但我遇到了一个问题。关于User如何在Django中工作,我感到非常困惑。这是我目前的代码:  在Models.py

from django.contrib.auth.models import User


class Profile(models.Model):
    user = models.OneToOneField(User)
    username = models.CharField(max_length=20)
    first_name = models.CharField(max_length=20)
    last_name = models.CharField(max_length=20)
    biography = models.TextField(max_length=1000)
    votes = models.IntegerField(blank=True, null=True)
    timestamp = models.DateTimeField(auto_now_add=True,
        auto_now=False, null=True
        )

    def __unicode__(self):
        return unicode(self.user.username)

class Post(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL)
    title = models.CharField(max_length=100, blank=False)
    body = models.TextField(blank=False)
    description = models.CharField(max_length=100, blank=True)
    date = models.DateTimeField(auto_now_add=True, auto_now=False)
    keywords = models.CharField(max_length=100, blank=True)
    votes = models.IntegerField(blank=True, null=True)

    def __unicode__(self):
        return unicode(self.title)

settings.pyAUTH_USER_MODEL = 'models.Profile'设置。

现在当我进入Admin网站并创建新的Profile时,它有一个User字段,我必须选择一个用户。我必须选择的User是我使用python manage.py createsuperuser创建的Django Admin超级用户。要完全创建新的User而不是与Django Admin超级用户相关联,我应该使用User制作自定义AbstractBaseUser吗?我遵循了一些教程,他们似乎都使用auth.User方法。我在这里做错了吗?

1 个答案:

答案 0 :(得分:1)

你最好在Post Model中使用ForeignKey,因为一个人可以有很多帖子,对吗?

SELECT
    employee_id,
    punch_in_time   = MIN(CASE WHEN activity = 'Punch In' THEN [date-time] END),
    punch_out_time  = MAX(CASE WHEN activity = 'Punch Out' THEN [date-time] END)
FROM tbl
GROUP BY employee_id, CAST([date-time] AS DATE)
ORDER BY employee_id, punch_in_time

并且您没有设置class Profile(models.Model): user = models.OneToOneField(User, related_name="user_profile") ... class Post(models.Model): user = models.ForeignKey(Profile, related_name="user_posts") ,如果要自定义身份验证后端,请设置它,我认为您希望使用django的内置用户模型进行身份验证。所以在设置中不需要AUTH_USER_MODEL

使用上述模型,您可以在以下视图中访问配置文件:

AUTH_USER_MODEL

并且在admin中,您只需要创建另一个新的django用户对象,以便能够将其分配给新的用户配置文件对象。