【发布时间】:2019-07-27 00:10:00
【问题描述】:
考虑以下模型:
class Product(models.Model):
name = models.CharField(max_length=...)
class Size(models.Model):
name = models.CharField(max_length=...)
products = models.ManyToManyField(Product, through=ProductXSize,
related_name='sizes', related_query_name='size')
class ProductXSize(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE,
related_name='productxsizes', related_query_name='productxsize')
size = models.ForeignKey(Size, on_delete=models.CASCADE,
related_name='productxsizes', related_query_name='productxsize')
我想要实现的是:
for p in Product.objects.filter(sizes=[Size.object.get(...)]):
...
也就是说,查找具有一种尺寸和特定尺寸的产品。
【问题讨论】:
-
那么您需要获取所有只有一种特定尺寸的产品吗? P.S 为什么你的
Product中没有尺寸 FK 作为 ForeighKey?您是否需要在ProductXSize模型中添加额外的尺寸字段,因为您可以通过product获得尺寸。 -
@SergeyPugach 我在
Product模型中没有FK,因为关系是多对多的。而且我不明白为什么我需要额外的尺寸字段。
标签: django django-models many-to-many django-orm