【问题标题】:unable to fetch item from selected categories in django无法从 django 中的选定类别中获取项目
【发布时间】:2021-10-02 09:03:13
【问题描述】:

我想获取相关子类别的项目,但我无法从该子类别中获取项目,它向我显示错误

AttributeError: 'Subcategories' 对象没有属性 'item'

这是我的代码

我的模型

class Subcategories(models.Model):
    categories = models.ForeignKey(Categories, on_delete=models.CASCADE, related_name='our_categories')
    name = models.CharField(max_length=200, blank=False)
    joined_date = models.DateTimeField(default=timezone.now,editable=False)
    update_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name


class Item(models.Model):

    categories = models.ForeignKey(Categories, on_delete=models.CASCADE,)
    subcategories = models.ForeignKey(Subcategories, on_delete=models.CASCADE, related_name='products')
    can_buy = models.ForeignKey(For, on_delete=models.CASCADE,)
    name = models.CharField(max_length=200, blank=False)
    contain_size = models.CharField(max_length=10, blank=True)
    first = models.ImageField(upload_to='items', blank=False)
    second = models.ImageField(upload_to='items', blank=True)
    third = models.ImageField(upload_to='items', blank=True)
    fourth = models.ImageField(upload_to='items', blank=True)
    fifth = models.ImageField(upload_to='items', blank=True)
    item_vedio = models.FileField(upload_to='item_vedio', blank=True)
    offered_price = models.FloatField(blank=False,)
    actual_price = models.FloatField(blank=False)
    about = models.TextField(blank=False, default="about" )
    offer = models.CharField(max_length=4, blank=True)
    
    def __str__(self):
        return self.name

我的 urls.py

urlpatterns = [
    path('<int:subcategory_id>/products/',Product.as_view(),name='product' ),
]

我的意见.py

class Product(View):
    def get(self, request,):
        category_list = Categories.objects.all()
        return render (request, 'products.html', {'category_list': category_list })

    def get(self, request, subcategory_id):
        subcategory = get_object_or_404(Subcategories, pk=subcategory_id)
        products = subcategory.item.all()
        return render (request, 'products.html',{"subcategory_list" : products })

知道是什么导致了问题,感谢您抽出宝贵时间

【问题讨论】:

  • 我认为您必须获取该项目,因为该项目具有与 Item.objects.filter(subcategories=subcategory_id) 等子类别的引用
  • 当您收到错误 AttributeError: 'Subcategories' object has no attribute 'item' model Subcategories has column or field named item but item model has Subcategories
  • Subcategory 相关的Item 模型名称是products,而不是item。所以使用:subcategory.products.all()

标签: django django-models django-rest-framework django-views django-templates


【解决方案1】:

项目模型中subcategories外键的相关名称为products

subcategory.products.all()

【讨论】:

    猜你喜欢
    • 2017-01-11
    • 2017-09-27
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多