我创建了一个模型,该模型具有django.contrib.auth.models
User
模型的外键。我需要检索外键引用的值。但是怎么做呢?
例如,我的模型是
from django.contrib.auth.models import User
def FooModel(models.Model):
user = models.ForeignKey(User)
那么我知道我可以使用:
FooModel.objects.get()
或FooModel.objects.filter()
但据我所知,它们只会从 FooModel 返回条目。那么如何从User
模型中检索呢?
m = FooModel.objects.get(id=123434)
m.user.username
您可以使用 .
.该wxample将返回相关用户的用户名。还可以使用查询筛选__
创建joins
。喜欢:
FooModel.objects.get(user__username='Foo')
但是,由于您是在FooModel
上构建查询,因此您将始终获得FooModel
结果。因此,您可以使用.
来使用外键关系来访问所需的User
字段。
编辑:
Django 还允许你在查询集上使用reverse relations
,所以User
即使模型没有外键来FooModel
它的模型结构,你也可以使用Foomodel.user
外键的反向关系,如下所示:
def FooModel(models.Model):
user = models.ForeignKey(User)
foofield = Models.CharField(...)
User.objects.get(foomodel__foofield='Beatles')
将返回具有FooModel
记录的用户,该记录带有他的User
记录的外键和披头士乐队的foofield值
您可以通过引用属性名称 + _id
来访问外键 ID。例如:yourmodel.user_id