ValueError at /cart/chelsea-01920-jersey/ int() 的文字无效,底数为 10:'color'


Hi guys im getting this error try to with my models and views
Traceback (most recent call last): File "C:UsershpAnaconda3libsite-packagesdjangocorehandlersexception.py", line 34, in inner response = get_response(request) File "C:UsershpAnaconda3libsite-packagesdjangocorehandlersbase.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request) File "C:UsershpAnaconda3libsite-packagesdjangocorehandlersbase.py", line 113, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "C:UsershpOneDriveDesktop
DevProjectsElsie_Finalcartsviews.py", line 57, in UpdateCart cart_item, created = CartItem.objects.get_or_create(cart=cart, item=item) File "C:UsershpAnaconda3libsite-packagesdjangodbmodelsmanager.py", line 82, in manager_method return 
getattr(self.get_queryset(), name)(*args, **kwargs) File "C:UsershpAnaconda3libsite-packagesdjangodbmodelsquery.py", line 538, in get_or_create return self.get(**kwargs), False File "C:UsershpAnaconda3libsite-packagesdjangodbmodelsquery.py", line 399, in
get clone = self.filter(*args, **kwargs) File "C:UsershpAnaconda3libsite-packagesdjangodbmodelsquery.py", line 892, in filter return self._filter_or_exclude(False, *args, **kwargs) File "C:UsershpAnaconda3libsite-packagesdjangodbmodelsquery.py", line 910, in _filter_or_exclude clone.query.add_q(Q(*args, **kwargs)) File "C:UsershpAnaconda3libsite-packagesdjangodbmodelssqlquery.py", line 
1290, in add_q clause, _ = self._add_q(q_object, self.used_aliases) File "C:UsershpAnaconda3libsite-packagesdjangodbmodelssqlquery.py", line 1318, in _add_q split_subq=split_subq, simple_col=simple_col, File "C:UsershpAnaconda3libsite-packagesdjangodbmodelssqlquery.py", line 1251, in build_filter condition = self.build_lookup(lookups, col,
value) File "C:UsershpAnaconda3libsite-packagesdjangodbmodelssqlquery.py", line 1116, in build_lookup lookup = lookup_class(lhs, rhs) File "C:UsershpAnaconda3libsite-packagesdjangodbmodelslookups.py", line 20, in __init__ self.rhs = self.get_prep_lookup() 
File "C:UsershpAnaconda3libsite-packagesdjangodbmodelsfieldsrelated_lookups.py", line 115, in get_prep_lookup self.rhs = target_field.get_prep_value(self.rhs) File "C:UsershpAnaconda3
libsite-packagesdjangodbmodelsfields__init__.py", line 966, in get_prep_value return int(value) ValueError: invalid literal for int() with base 10: 'color'

模型:

class CartItem(models.Model):
cart = models.ForeignKey(Cart, null=True, blank=True, on_delete=models.CASCADE)
variations = models.ManyToManyField(Variation, null=True, blank=True)
item = models.ForeignKey(Item, on_delete=models.CASCADE)
quantity = models.IntegerField(default=1)
notes = models.TextField(null=True, blank=True)
line_total = models.DecimalField(default=0.00,max_digits=1000, decimal_places=2)
created = models.DateTimeField(auto_now_add=True, auto_now=False)
updated = models.DateTimeField(auto_now_add=False, auto_now=True)
def __str__(self):
return self.item.title
class VariationManager(models.Manager):
def all(self):
return super(VariationManager,self).filter(active=True)
def sizes(self):
return self.all().filter(category='size')
def colors(self):
return self.all().filter(category='color')
def packages(self):
return self.all().filter(category='package')
VAR_CATEGORIES = (
('size','size'),
('color', 'color'),
('package', 'package'),
)
class Variation(models.Model):
item = models.ForeignKey(Item, on_delete=models.CASCADE)
category = models.CharField(max_length=120, choices=VAR_CATEGORIES, default='size')
image = models.ForeignKey(ItemImage, null=True, blank=True, on_delete=models.CASCADE)
title = models.CharField(max_length=100)
price = models.DecimalField(max_digits=100, decimal_places=2, null=True, blank=True)
active = models.BooleanField(default=True)
updated = models.DateTimeField(auto_now_add=False, auto_now=True)
objects = VariationManager()

def __str__(self):
return self.title

视图:

def UpdateCart(request, slug):
request.session.set_expiry(600)
try:
the_id = request.session['cart_id']
except:
#create cart
new_cart = Cart()
new_cart.save()
request.session['cart_id'] = new_cart.id
the_id = new_cart.id
cart = Cart.objects.get(id=the_id)
try:
item = Item.objects.get(slug=slug)
except Item.DoesNotExist:
pass
item_var = [] #product variation    
if request.method == "POST":
Qty = request.POST['Qty']
for item in request.POST:
key = item
value = request.POST[key]
try:
v = Variation.objects.get(item=item, category__iexact=key, title__iexact=value)
item_var.append(v)
except:
pass

cart_item, created = CartItem.objects.get_or_create(cart=cart, item=item)
if created:
print('yeah')

似乎您正在覆盖item变量:for item in request.POST:

然后,当您执行CartItem.objects.get_or_create(cart=cart, item=item)时,item值将是请求的最后一个对象。开机自检而不是item = Item.objects.get(slug=slug).

相关内容

最新更新