Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 23.03.2021
Сообщений: 29

Field 'id' expected a number but got 'palto'

09.01.2022, 15:53. Показов 1599. Ответов 9

Студворк — интернет-сервис помощи студентам
Ошибка Field 'id' expected a number but got 'palto'.
НЕ могу понять из-за чего ошибка


cart.py

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
from django.conf import settings
from shop.models import *
from decimal import Decimal
 
 
class Cart(object):
 
    def __init__(self, request):
        """
        Инициализация корзины
        """
        self.session = request.session
        cart = self.session.get(settings.CART_SESSION_ID)
        if not cart:
            # сохраняем ПУСТУЮ корзину в сессии
            cart = self.session[settings.CART_SESSION_ID] = {}
        self.cart = cart
 
    def __iter__(self):
        """
        Перебираем товары в корзине и получаем товары из базы данных.
        """
        product_ids = self.cart.keys()
        # получаем товары и добавляем их в корзину
        products = Cloth.objects.filter(id__in=product_ids)
 
        cart = self.cart.copy()
        for product in products:
            cart[str(product.id)]['product'] = product
 
        for item in cart.values():
            item['price'] = Decimal(item['price'])
            item['total_price'] = item['price'] * item['quantity']
            yield item
 
    def __len__(self):
        """
        Считаем сколько товаров в корзине
        """
        return sum(item['quantity'] for item in self.cart.values())
 
    def add(self, product, quantity=1, update_quantity=False):
        """
        Добавляем товар в корзину или обновляем его количество.
        """
        product_id = str(product.id)
        if product_id not in self.cart:
            self.cart[product_id] = {'quantity': 0,
                                     'price': str(product.price)}
        if update_quantity:
            self.cart[product_id]['quantity'] = quantity
        else:
            self.cart[product_id]['quantity'] += quantity
        self.save()
 
    def save(self):
        # сохраняем товар
        self.session.modified = True
 
    def remove(self, product):
        """
        Удаляем товар
        """
        product_id = str(product.id)
        if product_id in self.cart:
            del self.cart[product_id]
            self.save()
 
    def get_total_price(self):
        # получаем общую стоимость
        return sum(Decimal(item['price']) * item['quantity'] for item in self.cart.values())
 
    def clear(self):
        # очищаем корзину в сессии
        del self.session[settings.CART_SESSION_ID]
        self.save()
models.py

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from django.db import models
from django.urls import reverse
 
 
class Category(models.Model):
    name = models.CharField(max_length=100, db_index=True)
    slug = models.SlugField(max_length=70, unique=True)
 
    class Meta:
        ordering = ('-name', )
        verbose_name = 'Категория'
        verbose_name_plural = 'Категории'
 
    def get_absolute_url(self):
        return reverse('shop:home', kwargs={'cat_slug': self.slug})
 
    def __str__(self):
        return self.name
 
 
class Cloth(models.Model):
    cat = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='cloth')
 
    name = models.CharField(max_length=100, db_index=True)
    slug = models.SlugField(max_length=70, unique=True)
    image = models.ImageField(upload_to='cloth/%Y/%m/%d', blank=True)
    description = models.TextField(max_length=1000, blank=True)
    price = models.DecimalField(max_digits=10, decimal_places=2)
    available = models.BooleanField(default=True)
    created = models.DateTimeField(auto_now_add=True)
    uploaded = models.DateTimeField(auto_now=True)
 
    class Meta:
        ordering = ('created',)
        verbose_name = 'Одеждy'
        verbose_name_plural = 'Одежды'
 
    def get_absolute_url(self):
        return reverse('shop:detail', kwargs={'cloth_slug': self.slug})
 
    def __str__(self):
        return self.name
views.py

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from django.shortcuts import render, get_object_or_404, redirect
from django.views.decorators.http import require_POST
 
from cart.cart import Cart
from cart.forms import CartAdd
from shop.models import Cloth
 
 
@require_POST
def cart_add(request, cloth_id):
    cart = Cart(request)
    cloth = get_object_or_404(Cloth, id=cloth_id)
    form = CartAdd(request.POST)
 
    if form.is_valid():
        cd = form.cleaned_data
        cart.add(product=cloth,
                     quantity=cd['quantity'],
                     update_quantity=cd['update'])
 
    return redirect('cart:cart_detail')
 
 
def cart_remove(request, cloth_id):
    cart = Cart(request)
    cloth = get_object_or_404(Cloth, id=cloth_id)
    cart.remove(cloth)
    return redirect('cart:cart_detail')
 
 
def cart_detail(request):
    cart = Cart(request)
    form = CartAdd()
    return render(request, 'cart/cart.html', {'cart': cart, 'form': form})
forms.py

Python
1
2
3
4
5
6
7
8
from django import forms
 
QUANTITY_CHOICES = [(i, str(i)) for i in range(1, 21)]
 
 
class CartAdd(forms.Form):
    quantity = forms.TypedChoiceField(choices=QUANTITY_CHOICES, coerce=int)
    update = forms.BooleanField(required=False, initial=False, widget=forms.HiddenInput())
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.01.2022, 15:53
Ответы с готовыми решениями:

ValueError: Field 'receiver_id' expected a number but got ''
Здравствуйте. Пытаюсь создать функцию добавления нового поста на странице пользователя. Но при попытке применить миграции возникает ошибка:...

TypeError : Field 'id' expected a number but got '<django.db.models.query_utils.DeferredAttribute object at 0x0000000004
Доброго времени суток. Я начинающий разработчик Django. Работая над проектом, я столкнулся с проблемой, и у меня нет старших товарищей. Не...

Int number = 2; Console.WriteLine(++number - number-- * ++number); Выводит -6; Как ?
Знающие, объясните, пожалуйста. Каким чудом тут получается -6 ? O_o int number = 2; Console.WriteLine(++number - number-- *...

9
243 / 178 / 73
Регистрация: 17.10.2018
Сообщений: 749
09.01.2022, 16:48
Цитата Сообщение от Fantom121 Посмотреть сообщение
Ошибка Field 'id' expected a number but got 'palto'.
Категория или имя товара вместо id передается. Полностью трейсбэк есть?
0
0 / 0 / 0
Регистрация: 23.03.2021
Сообщений: 29
10.01.2022, 15:25  [ТС]
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
Environment:
 
 
Request Method: GET
Request URL: http://127.0.0.1:8000/cart
 
Django Version: 4.0
Python Version: 3.9.4
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'shop.apps.ShopConfig',
 'cart.apps.CartConfig']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']
 
 
Template error:
In template D:\Projects py\django\THE LOOP\the_loop\cart\templates\cart\cart.html, error at line 23
   Field 'id' expected a number but got 'palto'.
   13 : <body>
   14 :     <section class="models">
   15 :         <div class="container">
   16 :             <h2 class="models__title">Корзина</h2>
   17 : 
   18 :             <div class="models__inner">
   19 :                 <style>
   20 :                     .models__inner {
   21 :                         display: block;}
   22 :                 </style>
   23 :                  {% for item in cart %} 
   24 :                     {% with cloth=item.product %}
   25 :                         {{ item.get_total_price }}
   26 :                             <div class="models__item">
   27 :                                 <div class="models__el">
   28 :                                     <div class="el-1"></div>
   29 :                                     <div class="el el-1"></div>
   30 :                                 </div>
   31 :                                     {% if cloth.image %}
   32 :                                         <img src="{{ cloth.image.url }}" alt="" class="models__img">
   33 :                                     {% endif %}
 
 
Traceback (most recent call last):
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\db\models\fields\__init__.py", line 1822, in get_prep_value
    return int(value)
 
The above exception (invalid literal for int() with base 10: 'palto') was the direct cause of the following exception:
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "D:\Projects py\django\THE LOOP\the_loop\cart\views.py", line 33, in cart_detail
    return render(request, 'cart/cart.html', {'cart': cart, 'form': form})
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\shortcuts.py", line 19, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\template\loader.py", line 62, in render_to_string
    return template.render(context, request)
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\template\backends\django.py", line 61, in render
    return self.template.render(context)
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\template\base.py", line 176, in render
    return self._render(context)
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\template\base.py", line 168, in _render
    return self.nodelist.render(context)
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\template\base.py", line 977, in render
    return SafeString(''.join([
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\template\base.py", line 978, in <listcomp>
    node.render_annotated(context) for node in self
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\template\base.py", line 938, in render_annotated
    return self.render(context)
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\template\defaulttags.py", line 182, in render
    for i, item in enumerate(values):
  File "D:\Projects py\django\THE LOOP\the_loop\cart\cart.py", line 18, in __iter__
    products = Cloth.objects.filter(id__in=product_ids)
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\db\models\manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\db\models\query.py", line 974, in filter
    return self._filter_or_exclude(False, args, kwargs)
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\db\models\query.py", line 992, in _filter_or_exclude
    clone._filter_or_exclude_inplace(negate, args, kwargs)
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\db\models\query.py", line 999, in _filter_or_exclude_inplace
    self._query.add_q(Q(*args, **kwargs))
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\db\models\sql\query.py", line 1375, in add_q
    clause, _ = self._add_q(q_object, self.used_aliases)
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\db\models\sql\query.py", line 1396, in _add_q
    child_clause, needed_inner = self.build_filter(
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\db\models\sql\query.py", line 1329, in build_filter
    condition = self.build_lookup(lookups, col, value)
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\db\models\sql\query.py", line 1180, in build_lookup
    lookup = lookup_class(lhs, rhs)
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\db\models\lookups.py", line 22, in __init__
    self.rhs = self.get_prep_lookup()
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\db\models\lookups.py", line 256, in get_prep_lookup
    rhs_value = self.lhs.output_field.get_prep_value(rhs_value)
  File "D:\Projects py\django\THE LOOP\venv\lib\site-packages\django\db\models\fields\__init__.py", line 1824, in get_prep_value
    raise e.__class__(
 
Exception Type: ValueError at /cart
Exception Value: Field 'id' expected a number but got 'palto'.
0
243 / 178 / 73
Регистрация: 17.10.2018
Сообщений: 749
10.01.2022, 15:49
Цитата Сообщение от Fantom121 Посмотреть сообщение
product_ids = self.cart.keys()
# получаем товары и добавляем их в корзину
products = Cloth.objects.filter(id__in=product_ids)
Проверь, что вот тут получается
0
0 / 0 / 0
Регистрация: 23.03.2021
Сообщений: 29
10.01.2022, 15:58  [ТС]
Это может что-то с моделью ?
Слушай, а может попробовать переписать приложение ?
0
243 / 178 / 73
Регистрация: 17.10.2018
Сообщений: 749
10.01.2022, 15:59
Цитата Сообщение от Fantom121 Посмотреть сообщение
Это может что-то с моделью ?
Не с моделью, а с приходящими данными. Посмотри принтами, что где приходит.
0
0 / 0 / 0
Регистрация: 23.03.2021
Сообщений: 29
10.01.2022, 16:31  [ТС]
А как мне удалить данные из бд ?
Я удалил данные из sqlite3, а слаг 'palto' там ещё есть
0
243 / 178 / 73
Регистрация: 17.10.2018
Сообщений: 749
10.01.2022, 16:36
Лучший ответ Сообщение было отмечено Fantom121 как решение

Решение

Цитата Сообщение от Fantom121 Посмотреть сообщение
А как мне удалить данные из бд ?
Я удалил данные из sqlite3, а слаг 'palto' там ещё есть
Удали полностью файл и снова migrate выполни. Или SQLiteStudio заюзай.
1
0 / 0 / 0
Регистрация: 23.03.2021
Сообщений: 29
10.01.2022, 16:47  [ТС]
Всё, ипсравил
Большое спасибо !
0
243 / 178 / 73
Регистрация: 17.10.2018
Сообщений: 749
10.01.2022, 17:40
Цитата Сообщение от Fantom121 Посмотреть сообщение
Большое спасибо !
Пожалста )))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.01.2022, 17:40
Помогаю со студенческими работами здесь

SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
Создаю веб-приложение по типу &quot;Моего календаря&quot; На финальном этапе возникает ошибка Uncaught PDOException: SQLSTATE: Invalid...

Fatal error - Invalid parameter number: number of bound variables does not match number of tokens'
$pass = md5($_POST); $email = $_POST; $login = $_POST; $sex = $_POST; $avatar = $_POST; ...

Invalid parameter number: number of bound variables does not match number of tokens
Не могу решить ошибку: Invalid parameter number: number of bound variables does not match number of tokens Указывает на : if...

Invalid parameter number: number of bound variables does not match number of tokens
запрос $conn = connect_to_db(); $stmt = $conn-&gt;prepare(&quot;INSERT INTO brandaccounts (UserID, BrandID, LoginEmail, LoginID,...

Invalid parameter number: number of bound variables does not match number of tokens in
Добрый день. не могу понять в чем может быть дело Изменил файл &lt;?php define('unisitecms', true); session_start();


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru