在Django上查询当前经过身份验证的用户的两个表

时间:2019-06-04 13:05:51

标签: django django-models django-queryset

我正在尝试在我的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中编写代码时遇到了一些问题。

有人可以帮忙吗?谢谢

1 个答案:

答案 0 :(得分:2)

您尝试过这个吗

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

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

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


更新-1

  

这种表示法是什么:FKToT__FKToUser在做什么?

__ (双下划线)是Django中的 字段查找 符号(您可以在此处阅读更多信息,{{ 3}})

但是,这里的 __ 通过关系查找 Django Field lookup--Django Doc,它导致 SQL JOIN