我正在创建一个包含用户个人资料的网站,但我遇到了一个问题。关于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.py
我AUTH_USER_MODEL = 'models.Profile'
设置。
现在当我进入Admin
网站并创建新的Profile
时,它有一个User
字段,我必须选择一个用户。我必须选择的User
是我使用python manage.py createsuperuser
创建的Django Admin超级用户。要完全创建新的User
而不是与Django Admin超级用户相关联,我应该使用User
制作自定义AbstractBaseUser
吗?我遵循了一些教程,他们似乎都使用auth.User
方法。我在这里做错了吗?
答案 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用户对象,以便能够将其分配给新的用户配置文件对象。