我正在尝试通过join执行查询。
我的models.py看起来像:
class TSFH(models.Model):
sB = models.DateTimeField(null=True)
sE = models.DateTimeField(null=True)
FKToUser = models.ForeignKey(User,default=None, on_delete=models.PROTECT)
class Tld(models.Model):
dNm = models.CharField(verbose_name="",max_length=40,unique=True)
FKToUser = models.ForeignKey('auth.user', default=None, on_delete=models.PROTECT)
class TSF(models.Model):
FKToT = models.ForeignKey('T', on_delete=models.PROTECT)
FKToTSFH = models.ForeignKey('TSFH', on_delete=models.PROTECT, null=True, blank=True)
views.py
enteredd = request.GET.get('d', '')
query=TSFH.objects.filter(FKToT__dNm=enteredd,FKToUser=request.user,sE__isnull=False)
return render(request, 'view.html', {'q':q})
templates / file.html
{% if q %}
{% for res in q %}
<li><span>{{ res.sE }}</span></li>
{% endfor %}
{% else %}
{% endif %}
当我查看所有这些内容时,都会抱怨:
Cannot resolve keyword 'FKToT' into field
在普通的sql中,我希望通过直接从dNm
进行enteredd
搜索来执行以下操作,而不是如下所示的123.145.23.1
的硬编码值:
SELECT sE
FROM tsfh, tsf, t
where
tsfh.id=tsf.FKTotsfh_id
and
t.id=tsf.FKToT_id
and
tsfh.sE is not null
and
t.dNm='123.145.23.1';
如何将这些现有支票保留在query
中,但以某种方式包括此FKToT__dNm=enteredd
?
非常感谢您。
答案 0 :(得分:0)
在此行做一些修改:
query=TSFH.objects.filter(TST__FKToT__dNm=......)
答案 1 :(得分:0)