Django:如何在admin中定义与表的一对一关系?
朋友们,你好 我试图在django admin中定义与用户的一对一关系。下面是我在应用程序中models.py中的代码:Django:如何在admin中定义与表的一对一关系?,django,Django,朋友们,你好 我试图在django admin中定义与用户的一对一关系。下面是我在应用程序中models.py中的代码: from django.db import models class Tutor(models.Model): account = models.OneToOneField([A User from Admin]) # what should I code here? first_name = models.CharField(max_length=200)
from django.db import models
class Tutor(models.Model):
account = models.OneToOneField([A User from Admin]) # what should I code here?
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
我应该写什么来代替[管理员的用户]
谢谢。用户模型属于django.contrib.auth
编辑
如注释中所述,最好通过AUTH_USER_model设置引用模型。这样,如果更改用户模型,代码不会中断
现在,如果您想通过用户信息访问它,那么您可以。比如说,您需要访问用户的名字。然后,您只需在此处运行关系查询:
user_info = User.objects.get(username='someone')
first_name = user_info.tutor.first_name
附加信息:如果需要为用户添加名字和姓氏,则无需添加其他表。只需扩展UserCreationForm并为用户模型添加其他字段。这实际上取决于您如何设置用户模型。您只是在使用Django默认值吗?是否应该使用settings.AUTH\u USER\u模型而不是USER?通过@getup8,是的,我们应该使用它。有时程序员知道这个项目不会使用任何自定义用户模型。这就是为什么我们直接使用它。但正如你所说,这是最好的做法。同样的评论。。您是否应该使用settings.AUTH\u USER\u模型而不是USER?通过
from django.conf import settings
from django.db import models
class Tutor(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
from django.db import models
from django.contrib.auth.models import User
#You need to add the aforementioned line if you want to load User model here
class Tutor(models.Model):
account = models.OneToOneField(User, on_delete=models.CASCADE)
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
user_info = User.objects.get(username='someone')
first_name = user_info.tutor.first_name