for s in sizes: Inventory.objects.create(count=100,goods=good, color=c, size=s)TypeError: Inventory() got an unexpected keyword argument 'size'如何修正
时间: 2023-06-20 08:04:37 浏览: 34
在 Inventory 模型中添加一个 size 字段,或者检查是否该字段的名称写错了,应该与模型中的字段名称一致。如果 Inventory 模型中没有 size 字段,您需要运行数据库迁移以添加该字段。您可以使用以下命令运行数据库迁移:
```
python manage.py makemigrations
python manage.py migrate
```
这将根据您的模型更改创建数据库迁移并将其应用于数据库。
相关问题
for _size in goods['sizes']: if Size.objects.filter(sname=_size[0]).count() == 1: size = Size.objects.get(sname=_size[0]) else: size = Size.objects.create(sname=_size[0]) sizes.append(size) colors = [] for _color in goods['colors']: color = Color.objects.create(colorname=_color[0], colorurl=_color[1]) colors.append(color) for _spec in goods['specs']: goodsdetails = GoodsDetailName.objects.create(gdname=_spec[0]) for img in _spec[1]: GoodDetail.objects.create(goods=good,goodsdname=goodsdetails,gdurl=img) for c in colors: for s in size: Inventory.objects.create(count=100,goods=good, color=c, sizes=s)TypeError: Inventory() got an unexpected keyword argument 'size'如何修正哪里
根据错误提示,`Inventory` 模型中没有名为 `size` 的字段。你在创建 `Inventory` 对象时使用了 `size` 参数,导致出现了错误。
假设你的 `Inventory` 模型中有 `sizes` 字段,表示商品的尺码。那么你需要将创建 `Inventory` 对象时的参数名由 `size` 改为 `sizes`,即:
```
for c in colors:
for s in sizes:
Inventory.objects.create(count=100, goods=good, color=c, sizes=s)
```
这样就可以避免该错误了。
>>> import sys ... import arcpy ... import string ... ... reload(sys) ... sys.setdefaultencoding('utf-8') ... ... try: ... workspace = 'C:\Users\Administrator\Desktop\\qwe' ... outdb = 'C:\Users\Administrator\Desktop\\lutian.mdb' ... arcpy.env.workspace = workspace ... files = arcpy.ListFiles('*.*db') ... arcpy.env.workspace = outdb ... fcs = arcpy.ListFeatureClasses() ... fcs = fcs + arcpy.ListTables() ... dss = arcpy.ListDatasets() ... ... for File in files: ... for fc in fcs: ... arcpy.Append_management(workspace + '\\' + File + '\\' + fc, outdb + '\\' + fc) ... ... for ds in dss: ... fcs1 = arcpy.ListFeatureClasses(feature_dataset = ds) ... for fc1 in fcs1: ... arcpy.Append_management(workspace + '\\' + File + '\\' + ds + '\\' + fc1, outdb + '\\' + ds + '\\' + fc1) ... ... except arcpy.ExecuteError: ... print arcpy.GetMessages() ... Runtime error Traceback (most recent call last): File "<string>", line 15, in <module> TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType',根据错误完善此代码
这段代码中出现了两个问题,一个是缩进问题,一个是字符串连接问题。以下是修改后的代码。
```python
import sys
import arcpy
import string
reload(sys)
sys.setdefaultencoding('utf-8')
try:
workspace = 'C:\\Users\\Administrator\\Desktop\\qwe'
outdb = 'C:\\Users\\Administrator\\Desktop\\lutian.mdb'
arcpy.env.workspace = workspace
files = arcpy.ListFiles('*.*db')
arcpy.env.workspace = outdb
fcs = arcpy.ListFeatureClasses()
fcs = fcs + arcpy.ListTables()
dss = arcpy.ListDatasets()
for File in files:
for fc in fcs:
arcpy.Append_management(workspace + '\\' + File + '\\' + fc, outdb + '\\' + fc)
for ds in dss:
fcs1 = arcpy.ListFeatureClasses(feature_dataset = ds)
for fc1 in fcs1:
arcpy.Append_management(workspace + '\\' + File + '\\' + ds + '\\' + fc1, outdb + '\\' + ds + '\\' + fc1)
except arcpy.ExecuteError:
print(arcpy.GetMessages())
```
修改后的代码中,缩进问题已经被修复,并且修改了字符串连接方式,使用双反斜杠来转义路径中的反斜杠,防止出现字符串连接问题。另外,在except语句中,使用了print函数来输出错误信息。