我有个错误,app.models.multipleObject返回:get()返回了多个用户--它返回了17。 我想解析excel并把它放到模型中(城市和地区&用户)。我写的
fourrows_transpose = list(map(list, zip(*fourrows)))
val3 = sheet3.cell_value(rowx=0, colx=9)
user3 = User.objects.get(corporation_id=val3)
print(user3)
if user3:
area = Area.objects.filter(name="America")
pref = Prefecture.objects.create(name="prefecture", area=user3.area)
city = City.objects.create(name="city", prefecture=pref)
price_u1000 = Price.upper1000.objects.get(city=city)
price_500_1000 = Price.from500to1000.objects.get(city=city)
price_u500 = Price.under500.objects.get(city=city)
pref.name = "NY"
pref.save()
for i in range(len(fourrows_transpose)):
city.name = fourrows_transpose[i][1]
city.save()
print(fourrows_transpose[i][1])
price_u1000.name = fourrows_transpose[i][2]
price_u1000.save()
print(fourrows_transpose[i][2])
price_500_1000.name = fourrows_transpose[i][3]
price_500_1000.save()
print(fourrows_transpose[i][3])
price_u500.name = fourrows_transpose[i][4]
price_u500.save()
print(fourrows_transpose[i][4])
我想把这些数据
[['America', '', '', '', ''], ['', '', 'u1000', '500~1000', 'd500'], ['NY', 'City A', '×', '×', '×'], ['', 'City B', '×', '×', '×'], ['', 'City C', '×', '×', '×'], ['', 'City D', '×', '×', '×'], ['', 'City E', '×', '×', '×']]
像“美国”到地区,城市A到城市名称和价格。我该怎么解决这个问题?我应该写什么?在
尝试使用此方法捕获实例的第一条记录first()
它有助于获取特定对象实例的第一条记录,这些可以对您有所帮助
这里:
您试图获取一个用户,但有多个用户与
corporation_id=val3
匹配。由于objects.get()
无法猜出您真正想要的是哪一个,所以它用一个非常明确的消息来引发一个错误:“get()返回了多个用户,它返回了17”目前主要有四种解决方案:
获取与您的查询匹配的第一个用户(或最后一个或任意一个用户)(使用
User.objects.filter(corporation_id=val3)
.first()- or
.last()`etc)并调用它一天。好吧,你可以把它当作一个解决方案。。。有点。。。如果你不在乎结果。使
corporation_id
对于您的User
模型是唯一的。这意味着每个公司只能有一个用户,因此对于每个公司,您必须选择一个并删除所有其他用户。好吧,你可以把它当作一个解决方案。。。有点。。。如果你不在乎失去你的大部分用户。向用户模型中添加另一个“use_for_imports”布尔字段,使此字段和公司的组合唯一,并将查询更改为``用户.objects.get(corporation\uid=val3,使用_for_import=True)
. This will also require that you mark one user as "use for imports" for each corporation, else
get()will raise a
用户.doesnotex`例外情况。请使用另一个用户字段或字段组合,这些字段在用户查找时是唯一的,或者使用另一种方法来获取区域(因为您只将用户用于
area
字段值)。在这里,没有人能帮上忙,因为你没有说任何关于你的型号、要求等的事情。相关问题 更多 >
编程相关推荐