python - 字段 'id' 需要一个数字,但得到了.list 值
问题描述
我正在尝试使用键值获取会话购物车,但出现如下错误:TypeError: Field 'id' expected a number but got ['3', '2', '4', '6', '8']。“获取 /book/cart/HTTP/1.1” 500 134321
我需要改变的:
models.py
class Book(models.Model):
Books_cond_choice = (
('Old Book', 'Old'),
('New Book', 'New'),
)
book_id = models.AutoField
book_condition = models.CharField(max_length=10, choices=Books_cond_choice)
book_name = models.CharField(max_length=200)
price = models.IntegerField(default=0)
book_auther = models.CharField(max_length=200)
pub_date = models.DateField()
category = models.CharField(max_length=50, default="")
subcategory = models.CharField(max_length=50, default="")
pagecount = models.IntegerField(default=0)
desc = models.CharField(max_length=300)
image = models.ImageField(upload_to='book/images', default="")
def __str__(self):
return self.book_name
@staticmethod
def get_books_by_id(id):
return int(Book.objects.filter(id__in = [id]))
views.py
class Cart(View):
def get(self, request):
ids = list(request.session.get('cart').keys())
books = Book.get_books_by_id(ids)
print(books)
return render(request, 'book/cart.html', {'books' : books})
解决方案
您list()
已经Cart.get()
返回了一个列表,因此您可以按原样将其传递给过滤器。
我建议重命名它,所以在函数中你会看到它是一个列表
def get_books_by_id(ids_list):
return int(Book.objects.filter(id__in = ids_list))
推荐阅读
- c++ - _Get_unwrapped 的含义?
- django - 如何将非字段相关的日期范围添加到 Django 管理表单
- pandas - 生成随机日期,其中另一个日期列之间的增量在 python 中呈指数分布
- java - 有没有办法在 IntelliJ 装订线中突出显示未保存或更改的行 - 更改跟踪
- database - 定期快照事实表 - 设计问题
- swift - 使用可编码删除核心数据并建立关系
- html - 如何在文本下显示日期选择器
- react-native - 在 React Native 的 Menu Drawer 中,drawerContentOptions 不起作用?
- swift - 不推荐使用 withUnsafeBytes:使用 `withUnsafeBytes
(_: (UnsafeRawBufferPointer) throws -> R) rethrows -> R` - python - 无法从 S3 存储桶读取 excel 文件