Джанго не может назначить «Пиццу»: «Order.Food_Name» должен быть экземпляром «Foods» - PullRequest
0 голосов
/ 09 марта 2019

Привет, ребята. Я работаю над проектом ресторана, который позволяет пользователю выбрать еду и забронировать заказ, но я получаю эту ошибку, когда пытаюсь заказать заказ
«Django не может назначить» «Pizza»: «Order.Food_Name» должно быть экземпляром «Foods». »
Я использую раскрывающееся меню для выбора продуктов, которые я использую в Django версии 2.1.5. Пожалуйста, помогите
views.py

def place_order(request):
name = request.POST["user"]
food_items = request.POST['food_item']
qty = request.POST['qty']
rating = request.POST['ratings']
price = Foods.Food_Price

order = Order(Date=datetime.date, Name_of_Person=name,Food_Name=food_items, Qty=qty, Total=price, Ratings=rating)
order.save()

return render(request, "index.html")

model.py

from django.db import models


class Foods(models.Model):
    Food_Number = models.IntegerField(null=False,)
    Food_Name = models.CharField(max_length=30, primary_key=True, null=False)
    Food_Qty = models.CharField(max_length=10)
    Food_Price = models.IntegerField()

    def __str__(self):
        return f"{self.Food_Number} - {self.Food_Name} {self.Food_Price}"


class Order(models.Model):
    Order_id = models.AutoField(null=False, primary_key=True)
    Date = models.DateField()
    Name_of_Person = models.CharField(null=False, max_length=40)
    Food_Name = models.ForeignKey(Foods, on_delete=models.CASCADE)
    Qty = models.CharField(max_length=10)
    Total = models.IntegerField()
    Ratings = models.IntegerField()

    def __str__(self):
        return f"{self.Order_id} - {self.Name_of_Person} |{self.Food_Name} |{self.Total}"

Что я могу сделать, чтобы решить эту ошибку

1 Ответ

2 голосов
/ 09 марта 2019

Проблема в вашей Order модели Food_Name - это поле с внешним ключом. Таким образом, вам нужно присвоить этому полю модель-экземпляр, которая в данном случае является Food. Но вы назначаете food_items = request.POST['food_item'], что, как я полагаю, является строкой food_name. Вот почему эту ошибку поднимают. Я не думаю, что ваша модель правильно оформлена. Food_Name - это не уникальное поле идентификатора в модели Food, а в таблице Order, которую вы хотели бы иметь Food, а не Food_name.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...