Django 如何处理类型错误,int()参数必须是字符串或数字?

Django 如何处理类型错误,int()参数必须是字符串或数字?,django,django-models,Django,Django Models,我有一个型号OrderItem class OrderItem(SmartModel): shopping_id = models.CharField(max_length=50,db_index=True) quantity = models.IntegerField(default=0) item = models.ForeignKey(Item) order = models.ForeignKey(Order) 我在函数中这样做是为了创建一个对象 try:

我有一个型号
OrderItem

class OrderItem(SmartModel):
    shopping_id = models.CharField(max_length=50,db_index=True)
    quantity = models.IntegerField(default=0)
    item = models.ForeignKey(Item)
    order = models.ForeignKey(Order)
我在函数中这样做是为了创建一个对象

try:
   order= Order.objects.get(pk=id)
   restaurant = Restaurant.objects.get(pk=id)
except:
   order = Order(created_by=anon_user,modified_by=anon_user)

oi=OrderItem(order,shopping_id=_shopping_id(request),
                           quantity=quantity,
                           item=i,
                           created_by=anon_user,
                           modified_by=anon_user)
oi.save()
我收到一个错误
int()参数必须是字符串或数字,而不是“顺序”

我该怎么做呢?

应该是这个链接

oi=OrderItem.objects.create( shopping_id=_shopping_id(request),
                           quantity=quantity,
                           item=i,
                           order=order,
                           created_by=anon_user,
                           modified_by=anon_user)

应该是这个链接

oi=OrderItem.objects.create( shopping_id=_shopping_id(request),
                           quantity=quantity,
                           item=i,
                           order=order,
                           created_by=anon_user,
                           modified_by=anon_user)

您可能应该使用一个管理器来正确地创建对象,以不会实际影响数据库的方式实例化类
Order.objects.create(…)

您可能应该使用一个管理器来正确地创建对象,以不会实际影响数据库的方式实例化类<代码>顺序.对象.创建(…)此行-

order = Order(created_by=anon_user,modified_by=anon_user)
创建
Order
类的实例,但不会保存到数据库中,并且它没有与之关联的主键,其他模型可以使用它来保存关系,除非调用
Order.save()
。因此,您必须调用
order.save()
。然后创建
OrderItem
,如-

oi=OrderItem(
    order=order,
    shopping_id=_shopping_id(request),
    quantity=quantity,
    item=i,
    created_by=anon_user,
    modified_by=anon_user
)
oi.save()
另外,请确保
i
anon\u用户
具有主键。

此行-

order = Order(created_by=anon_user,modified_by=anon_user)
创建
Order
类的实例,但不会保存到数据库中,并且它没有与之关联的主键,其他模型可以使用它来保存关系,除非调用
Order.save()
。因此,您必须调用
order.save()
。然后创建
OrderItem
,如-

oi=OrderItem(
    order=order,
    shopping_id=_shopping_id(request),
    quantity=quantity,
    item=i,
    created_by=anon_user,
    modified_by=anon_user
)
oi.save()

另外,请确保
i
anon\u用户
具有主键。

我可以看到您的代码存在各种问题。首先,您使用相同的
id
获取餐厅,就像获取订单一样-

   order= Order.objects.get(pk=id)
   restaurant = Restaurant.objects.get(pk=id)
其次,您需要先保存订单,然后才能将其作为外键传递给订单项。否则,将不会在您的订单上创建主键,因此,
OrderItem
将无法在ForeignKey字段中使用它

最后,当您初始化
OrderItem
时,您将订单作为arg而不是kwarg传递

您的代码应该类似于-

# get order_id and restaurant_id
try:
   order= Order.objects.get(pk=order_id)
   restaurant = Restaurant.objects.get(pk=restaurant_id)
except:
   order = Order(created_by=anon_user,modified_by=anon_user)
   order.save()
oi=OrderItem(order=order,shopping_id=_shopping_id(request),
             quantity=quantity,
             item=i,
             created_by=anon_user,
             modified_by=anon_user)
oi.save()

另外,您可以用try/except语句替换django的快捷方式函数。

我可以看到您的代码存在各种问题。首先,您使用相同的
id
获取餐厅,就像获取订单一样-

   order= Order.objects.get(pk=id)
   restaurant = Restaurant.objects.get(pk=id)
其次,您需要先保存订单,然后才能将其作为外键传递给订单项。否则,将不会在您的订单上创建主键,因此,
OrderItem
将无法在ForeignKey字段中使用它

最后,当您初始化
OrderItem
时,您将订单作为arg而不是kwarg传递

您的代码应该类似于-

# get order_id and restaurant_id
try:
   order= Order.objects.get(pk=order_id)
   restaurant = Restaurant.objects.get(pk=restaurant_id)
except:
   order = Order(created_by=anon_user,modified_by=anon_user)
   order.save()
oi=OrderItem(order=order,shopping_id=_shopping_id(request),
             quantity=quantity,
             item=i,
             created_by=anon_user,
             modified_by=anon_user)
oi.save()

顺便说一句,你可以用try/except语句代替django的快捷键功能。

你知道,外键
Order
不存在,所以我必须创建,而这正是我试图实现的一切。你知道,外键
Order
不存在,因此,我必须创造,这就是我试图实现的一切,这就是我正在做的…我只是在这里展示了几行代码…对不起,这就是我正在做的…我只是在这里展示了几行代码…对不起,我没有更早地回到这些。。但是它奏效了,我很感激谢谢你对不起我没有早点回来。。但是它起了作用,我很感激..谢谢.你也应该只抓到DoesNotExist->except:Order.DoesNotExist,Restaurant.DoesNotExist你也应该只抓到DoesNotExist->except:Order.DoesNotExist,Restaurant.DoesNotExist