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



我创建了一个模型,该模型具有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

最新更新