Ani*_*wal 2 python django django-models django-database django-users
我希望foreign key我的模型中的关系与表中的username字段User(存储user创建的django.contrib.auth.forms.UserCreationForm).
我的模型看起来如何:
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()
Run Code Online (Sandbox Code Playgroud)
该username字段应该是外键.外键应该在此字段中
小智 10
除非我遗漏了某些内容,否则您可以将ForeignKey用于特定字段:
class Blog(models.Model):
username = models.ForeignKey(User, to_field='username')
Run Code Online (Sandbox Code Playgroud)
https://docs.djangoproject.com/en/1.11/ref/models/fields/#django.db.models.ForeignKey.to_field
你不能有一个ForeignKey到一个字段,但你可以连续.
您想要username通过User模型获得哪些
所以:
blog.user.username
Run Code Online (Sandbox Code Playgroud)
如果你坚持让blog.username你可以定义这样的属性:
from django.db import models
from django.contrib.auth.models import User
class Blog(models.Model):
user = models.ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)
然后访问您想要使用的字段:
blog.user.username
Run Code Online (Sandbox Code Playgroud)
如果你坚持让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
Run Code Online (Sandbox Code Playgroud)
与该属性,您可以访问username通过blog.username.
user = ForeignKey('auth.User')
Run Code Online (Sandbox Code Playgroud)
要么
from django.contrib.auth.models import User
user = ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)
或者更推荐
from django.conf import settings
user = ForeignKey(settings.AUTH_USER_MODEL)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4515 次 |
| 最近记录: |