Python 类型错误:';GoodsCategory';对象不支持索引
货物.pyPython 类型错误:';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
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]
。