Python 类型错误:';GoodsCategory';对象不支持索引

Python 类型错误:';GoodsCategory';对象不支持索引,python,django,Python,Django,货物.py class Goods(models.Model): category = models.ForeignKey(GoodsCategory, verbose_name='xxx') goods_sn = models.CharField(default='', max_length=50, verbose_name='xxx') name = models.CharField(max_length=300, verbose_na

货物.py

    class Goods(models.Model):
        category = models.ForeignKey(GoodsCategory, verbose_name='xxx')
        goods_sn = models.CharField(default='', max_length=50, verbose_name='xxx')
        name = models.CharField(max_length=300, verbose_name='xxx')
        click_num = models.IntegerField(default=0, verbose_name='xxx')
        sold_num = models.IntegerField(default=0, verbose_name='xxx')
导入商品\u data.py

from apps.goods.models import Goods, GoodsCategory, GoodsImage

from db_tools.data.product_data import row_data

for goods_detail in row_data:
    goods = Goods()
    goods.name = goods_detail['name']
    goods.market_price = float(int(goods_detail['market_price'].replace('¥', '').replace('&', '')))
    goods.shop_price = float(int(goods_detail['sale_price'].replace('&', '').replace('$', '')))
    goods.goods_brief = goods_detail['desc'] if goods_detail['desc'] is not None else ''
    goods_goods_desc = goods_detail['goods_desc'] if goods_detail['goods_desc'] is not None else ''
    goods.goods_front_image = goods_detail['images'][0] if goods_detail['images'] is not None else ''

    category_name = goods_detail['categorys'][-1]
    category = GoodsCategory.objects.filter(name=category_name)
    if category:
        goods.category = category[0]
    goods.save()
因为我有个错误,所以让我试着这样写:

categories = GoodsCategory.objects.filter(name=category_name)
if categories.exists():
    category = categories[0]
else:
    category = GoodsCategory.objects.create(name=category_name)
goods.category = category[0]
goods.save()
但我还有一个错误。
TypeError:“GoodsCategory”对象不支持索引

无需索引类别对象

在if条件中,您已经为QuerySet编制了索引并获得了category对象,而在else条件中,您正在使用create创建一个新对象,它将返回一个实例

因此,请尝试以下方法

categories = GoodsCategory.objects.filter(name=category_name)  # You get a QuerySet here
if categories.exists():
    category = categories[0]  # Okay to index a QuerySet when something exists in it, you get the category object when you index it
else:
    category = GoodsCategory.objects.create(name=category_name)  # You get a GoodsCategory object here, cannot index this and no need to, since you already have the object
goods.category = category
goods.save()

为什么你还在尝试索引<代码>类别是单个项目,无需执行
类别[0]