与M2M相关的查询集有问题:简化模型为
class Category(models.Model):
name = models.CharField(max_length=200)
class Product(models.Model):
name = models.CharField(max_length=200)
category = models.ManyToManyField(
Category, blank=True, null=True, related_name="categorytest")
我通常使用相关名称进行相关查询(在这里工作得很好,没有问题),但我想尝试"set_all()"在这种情况下。说我愿意。elecs = Category.objects.get(name="Electronics")然后:elecs.product_set.all()
我得到AttributeError: 'Category'对象没有属性'product_set'。我有点惊讶,因为这是在使用查询集而不是模型实例时发生的错误,如果需要确认,则类型(elecs)会给我提供类'store.models.Category'。我多次迁移/擦除db,没有变化。知道吗?由于
使用related_name=…
反向指定关系的名称参数<一口>[Django-doc] 吃饭。由于设置了related_name='categorytest'
,因此可以使用以下命令访问它们:一口>
elecs.categorytest.all()
但可能使用categorytest
不是一个好主意。例如,最好将其指定为related_name='products'
。