Django通过特定的相关对象字段对对象进行排序

时间:2019-05-14 16:44:22

标签: python django

在我的项目中,有一个通过ForeignKey关系关联的Attraction模型和AttractionTag模型。每个Attraction具有相同的AttractionTag集,但仅值字段不同。 现在,我想根据特定AttractionTag的value字段订购景点。例如,每个景点都有一个名为“ modern”的AttractionTag。我想根据现代AttractionTag值字段订购景点。

我尝试过

attractions.order_by('-attractiontag__value')  

但是此命令通常在AttractionTag上对景点排序,而不是基于特定的AttractionTag。

这是模特

class Attraction (models.Model) :
    city = models.ForeignKey(City, on_delete=models.CASCADE)
    name=models.CharField(max_length=50, unique=True)
    image = models.ImageField(upload_to=attractionImagePath, null=True, blank=False)
    imageTop = models.ImageField(upload_to=attractionTopImagePath, null=True, blank=True)
    pub_date = models.DateTimeField(auto_now_add=True)
class AttractionTag (models.Model):
    attraction=models.ForeignKey(Attraction, on_delete=models.CASCADE)
    name = models.CharField(max_length=50)
    value=models.IntegerField(default=0)

我该如何解决?

谢谢

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案。

tags = AttractionTag.objects.filter(attraction__city=city)  
tags = tags.filter(name='modern').order_by('-value')
attraction = [tag.attraction for tag in tags]

应该工作