我有一些这种关系的模型:
EmailReport --many-to-many--> PaymentReport --foreign-key--> Shop --many-to-many--> users现在我想联系来自EmailReport的用户。我尝试了这个查询,但失败了:
query = models.EmailReport.objects.prefetch_related('payment_report').prefetch_related('shop__users').filter(pk__in=ids)有人知道正确的查询吗?
更新:
由于@bartosz-stasiak,查询如下:
objects= EmailReport.objects.prefetch_related('payment_report__shop__users').filter(pk__in=ids)但是我如何才能访问预字符用户呢?尝试过,但失败了:
objects= EmailReport.objects.prefetch_related('payment_report__shop__users').filter(pk__in=ids)
for object in objects:
object.users.all()发布于 2022-11-06 14:44:44
可能:
email_reports = EmailReport.objects.prefetch_related('payment_report__shop__users').filter(pk__in=ids)(这是ids吗?用户ids还是EmailReport ids?)
这应该是最少数量的查询。请记住,您不能做进一步的过滤,否则它将破坏预取。
那么有几种方法可以得到用户。最简单的可能是:(但可能没有效率)
users_from_query = []
for email_report in email_reports:
for pr in email_report.payment_report.all()
users_from_query.extend(pr.shop.users.all())https://stackoverflow.com/questions/74336791
复制相似问题