问题描述
我有以下型号:
class McMbData(models.Model):
lastname = models.CharField(max_length=50,blank=True)
class Visits(models.Model):
mcmbdata_id = models.ForeignKey(McMbData,on_delete=models.CASCADE)
name = models.CharField(max_length=50,blank=True)
signe_in = models.BooleanField(default=False)
我只想获取signe_in = True
的访问记录这是我尝试过的:
McMbData.objects.filter(visits__signe_in = False)
因此,我获得了至少满足条件一次的所有McMbData条目:
姓氏:Mutermann
访问次数:熊,真-叛徒,假-好莱坞,假
我只想获取真实的访问条目。像这样:
姓氏:Mutermann
造访次数:熊,真实
解决方法
对于任何可以覆盖预取查询集的McMbData对象,您只需要signe_in = True Visits。
from django.db.models import Prefetch
McMbData.objects.prefetch_related(
Prefetch(
'visits_set',queryset=Visits.objects.filter(signe_in=True)
)
)
,
尝试一下:
McMbData.objects.filter(visits__signe_in = True)