0

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

4

2 回答 2

2
m = FooModel.objects.get(id=123434)
m.user.username

您可以使用..that 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 值

于 2012-05-08T18:43:02.487 回答
0

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

于 2012-05-08T18:38:55.720 回答