【发布时间】:2021-12-02 15:44:28
【问题描述】:
我的 Django 中有以下模型:
class Filter(models.Model):
min_price = models.PositiveIntegerField(null=False, blank=False)
max_price = models.PositiveIntegerField(null=False, blank=False)
trait = models.ManyToManyField(Trait, null=True, blank=True)
class Flat(models.Model):
living_area = models.DecimalField(max_digits=7, decimal_places=2, null=True, blank=True, db_index=True)
trait = models.ManyToManyField(Trait)
class Trait(models.Model):
name = models.CharField(max_length=255, blank=False, null=False, db_index=True)
在我的情况下,特征可以是例如:电梯。如果 Flat 和 Trait(name="Elevator") 之间有联系,那么我可以假设 Flat 有电梯。
我想做的是根据特征搜索单位 - 来自 Flat 的特征和来自 Filter 的特征应该是相同的。
我是这样想的:
filte_obj = Filter.objects.get(pk=pk)
flat = Flat.objects.filter(trait__id__in=[x.id for x in filter_obj.trait.all()])
很遗憾,我没有按自己的意愿工作。我只想查看 Traits QuerySet 与 Filter 的特征 QuerySet 相同的 Flats。
我该怎么做?
【问题讨论】:
标签: python django django-models django-forms