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