有通过 ForeignKey 附加到“对象”的“图像”,每个“对象”可以有多个图像。还有通过 ForeignKey 附加到“对象”的“主题”。如何从“对象”中附加一张图像到“主题”,注意到“select=1”了吗?通过注释,我可以获得图像数量或所有图像。
可行的选择,但这不是你需要的
Subject.objects.filter(object_id__hromada_id=hromada.id, state=3).annotate(image=Count('object__objectimages__image', filter=Q(object__objectimages__select=1)))
或者
Subject.objects.filter(object_id__hromada_id=hromada.id, state=3).annotate(image=F('object__objectimages__image'))
class Object(models.Model):
hromada = models.ForeignKey(Hromady, on_delete=models.CASCADE)
state = models.IntegerField(choices=SELECT_CHOICES, default=SELECT_CHOICES[1][0])
...
class ObjectImages(models.Model):
object = models.ForeignKey(Object, on_delete=models.CASCADE)
image = models.ImageField(upload_to=upload_path_img)
select = models.BooleanField(default=False)
...
class Subject(models.Model):
object = models.ForeignKey(Object, on_delete=models.CASCADE)
state = models.IntegerField(choices=SELECT_CHOICES, default=SELECT_CHOICES[1][0])
...
列出主题中的主题 => 对象 => ImageObject 中的 1 个图像(选择 = 1)或无
您可以尝试使用这样的查询。
这应该会给你预期的结果 — — 对于每个主题,选择
subquery
一张具有select=1
和 的图像image.object_id=subject.object_id
。