ForeignKey到Model字段?

时间:2016-01-19 11:05:47

标签: python django django-models django-users django-database

我希望我的模型中的foreign key关系与username表中的User字段(存储使用user创建的django.contrib.auth.forms.UserCreationForm)。< / p>

我的模型看起来如何:

class Blog(models.Model):
    username = models.CharField(max_length=200) // this should be a foreign key
    blog_title = models.CharField(max_length=200)
    blog_content = models.TextField()

username字段应为外键。The Foreign Key should be with this field

2 个答案:

答案 0 :(得分:8)

除非我遗漏了某些内容,否则你可以拥有一个特定字段的ForeignKey:

class Blog(models.Model):
    username = models.ForeignKey(User, to_field='username')

https://docs.djangoproject.com/en/1.11/ref/models/fields/#django.db.models.ForeignKey.to_field

答案 1 :(得分:5)

您不能将ForeignKey用于某个字段,但您可以连续使用。

您希望通过username型号

提供User

所以:

blog.user.username

如果你坚持使用blog.username,你可以定义这样的属性:

from django.db import models
from django.contrib.auth.models import User

class Blog(models.Model):
    user = models.ForeignKey(User)

然后访问您想要使用的字段:

blog.user.username

如果你坚持使用blog.username,你可以定义这样的属性:

from django.db import models
from django.contrib.auth.models import User

class Blog(models.Model):
    user = models.ForeignKey(User)

    @property
    def username(self):
        return self.user.username

使用该属性,您可以通过username访问blog.username

有关如何导入用户

的说明
user = ForeignKey('auth.User')

from django.contrib.auth.models import User
user = ForeignKey(User)

或更推荐的

from django.conf import settings
user = ForeignKey(settings.AUTH_USER_MODEL)