Django从django.contrib.auth.models用户获取foreignId的值

时间:2012-05-08 18:36:34

标签: django django-models

我创建了一个具有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模型中检索?

2 个答案:

答案 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记录和披头士

的foofield值

答案 1 :(得分:0)

您可以通过引用属性名称+ _id来访问外键ID。例如:yourmodel.user_id