Django 对象没有属性'all'



我有一个关于外键字段的查询,返回以下错误。

'Category' object has no attribute 'all'

这是我的问题:

p = get_object_or_404(Product, slug=product_slug)
categories = p.categories.all()

基于这些模型:

class Category(models.Model):
  name = models.CharField(max_length=50)
  slug = models.SlugField(max_length=50,  unique=True, help_text='Unique value from product page URL, created from name')
  is_active = models.BooleanField(default=True)
  created_at = models.DateTimeField(auto_now_add=True)
  updated_at = models.DateTimeField(auto_now=True)
class Product(models.Model):
  name = models.CharField(max_length=255, unique=True)
  slug = models.SlugField(max_length=255, unique=True, help_text='Unique value for product page URL, created from name')
  created_at = models.DateTimeField(auto_now_add=True)
  updated_at = models.DateTimeField(auto_now=True)
categories = models.ForeignKey(Category, null=True)

我知道这个问题是外键只引用一个模型的结果;然而,当我尝试运行时:

categories = p.categories

我返回以下错误:

'Category' object is not iterable

我不知道如何解决这个问题。

您应该为您的关系使用不同的方法。我看到你的代码的方式,你应该有一个ManytoMany关系,因为一个产品可能属于N个类别,一个类别可能有N个产品。

检查此ManyToManyField

无论如何,试着在你的Product模型中改变这一点:

categories = models.ManyToManyField(Category, null=True)

相关内容

  • 没有找到相关文章

最新更新