【问题标题】:Query two tables in Django on currently authenticated user在 Django 中查询当前经过身份验证的用户的两个表
【发布时间】:2019-10-20 00:32:16
【问题描述】:

我试图在我的 django 模型中查询 2 个表 - 但在制定如何编写语法时遇到了一些问题。

models.py

class T(models.Model): 
    emailVerified = models.EmailField(max_length=50) 
    dNm = models.CharField(max_length=40,unique=True)
    FKToUser = models.ForeignKey('auth.user', default=None, on_delete=models.PROTECT)  

class TSF(models.Model):
    httpResponse = models.IntegerField(validators=[MaxValueValidator(3)])
    FKToT = models.ForeignKey('T', on_delete=models.PROTECT)

在常规(伪)sql 中,我正在尝试执行以下操作:

SELECT dNm
FROM T, TSF
WHERE T.id=TSF.FKToT
AND T.FKToUser=<<THE CURRENTLY SIGNED IN USER>>

我只是在制定如何用 django orm 编写这个问题时遇到了一些问题。

有人可以帮忙吗?谢谢

【问题讨论】:

  • 另外,Django Model ForeignKey 字段解析为模型实例,因此 T.FKToUser 应该真正命名为 T.user(模型层抽象了关系,因此您不必手动获取相关的模型实例)。

标签: django django-models django-queryset


【解决方案1】:

你试过了吗,

TSF.objects.filter(FKToT__FKToUser=request.user)

这将返回一个与当前登录用户相关的 TSF Queryset 对象。

如果需要,您可以使用 values()QuerySet 中检索特定字段。


更新-1

这个符号是什么:FKToT__FKToUser 在做什么?

__(双下划线)是 Django 中的 字段查找 表示法(您可以在此处阅读更多信息,Django Field lookup--Django Doc

但是,这里 __通过关系查找Lookups that span relationships- Django Doc 会导致 SQL JOIN

【讨论】:

  • 问题:这个符号是什么:FKToT__FKToUser 做什么?
  • @Jshee 阅读文档怎么样? (在另一条评论中提供了链接)。
  • @Jshee 我已经用更多信息更新了答案。希望对你有所启发。
猜你喜欢
  • 1970-01-01
  • 2016-11-30
  • 2015-05-25
  • 1970-01-01
  • 2020-12-22
  • 2020-07-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-15
相关资源
最近更新 更多