简体   繁体   English

ForeignKey到Model字段?

[英]ForeignKey to a Model field?

I want a foreign key relation in my model with the username field in the User table(that stores the user created with django.contrib.auth.forms.UserCreationForm ). 我希望有一个foreign key在我与模型关系username在该领域User表(存储在user与创建django.contrib.auth.forms.UserCreationForm )。

This how my model looks: 我的模型看起来如何:

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()

The username field should be the foreign key. username段应该是外键。 The Foreign Key should be with this field 外键应该在此字段中

Unless I'm missing something, you can have a ForeignKey to a specific field: 除非我遗漏了某些内容,否则您可以将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 https://docs.djangoproject.com/en/1.11/ref/models/fields/#django.db.models.ForeignKey.to_field

You can't have an ForeignKey to a field, but you can to a row. 你不能有一个ForeignKey到一个字段,但你可以连续。

You want username which is available through the User model 你想要username是可以通过User模型

So: 所以:

blog.user.username

If you insist on having blog.username you can define a property like this: 如果你坚持使用blog.username你可以定义这样的属性:

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

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

Then to access the field you want use: 然后访问您想要使用的字段:

blog.user.username

If you insist on having blog.username you can define a property like this: 如果你坚持使用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

With that property, you can access username through blog.username . 使用该属性,您可以通过blog.username访问username

Note on how to import User 关于如何导入用户的注意事项

user = ForeignKey('auth.User')

or 要么

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

or the more recommended 或者更推荐

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM