Идентификатор не назначается объектам при создании в Django - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть класс в моем models.py с именем Order

class Order(models.Model):
    customer_name = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
        related_name='customer_name',
    )
    order_individual_price = models.IntegerField(default=1)
    order_name = models.CharField(max_length=200)
    order_quantity = models.IntegerField(default=1)
    order_total_price = models.IntegerField(default=1)

    def __str__(self):
        return self.order_name

В моем views.py я создаю новый экземпляр порядка при нажатии кнопки

def ordering(request):
    latest_order = Order.objects.all()
    menu = Menu.objects.all()
    if request.method == 'POST':
        if request.user.is_authenticated:
            menu_instance = request.POST.get('add')
            if menu_instance:
                get_order = Menu.objects.get(id=menu_instance)
                get_price = get_order.Menu_price
                new_order = Order.objects.create(customer_name=request.user, 
                order_name=get_order, order_individual_price=get_price)

                return redirect('shop-ordering')
            order_instance = request.POST.get('delete')

        else:
           messages.info(request, f'Please Sign In First')
           return redirect('login')

    return render(request, 'shop/ordering.html', {'title':'Ordering', 'latest_order': 
    latest_order, 'menu':menu})

Попытка получить доступ к идентификатору через оболочку с помощью этой команды

>>> from shop.models import Menu, Order
>>> Order.objects.get(id=1)

Но вместо этого я получаю эту ошибку

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/Users/alan/Desktop/FRIENDS_CAFE_DJANGO/venv/lib/python3.8/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/Users/alan/Desktop/FRIENDS_CAFE_DJANGO/venv/lib/python3.8/site-packages/django/db/models/query.py", line 415, in get
    raise self.model.DoesNotExist(
shop.models.Order.DoesNotExist: Order matching query does not exist.

Однако, когда я запускаю Order.objects.all(), он возвращает мне объекты

>>> Order.objects.all()
<QuerySet [<Order: test1>, <Order: test2>]>

Я не трогал ни один из файлов init , и, поскольку django создает идентификатор автоматически, я действительно не понимаю, почему он не присваивает каждому заказу идентификатор.

1 Ответ

0 голосов
/ 25 апреля 2020

Запустите следующую команду, чтобы увидеть ID ваших текущих объектов Order. Если объекты Order существуют и ваш запрос не выполняется, это потому, что не существует объекта Order с pk = 1.

Order.objects.all().values('id')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...