Nik*_*iak 11 python django foreign-keys django-models django-views
我的模型.py
\n\nclass Order(models.Model):\n user = models.ForeignKey(User, blank=True, null=True, on_delete=models.PROTECT)\n customer_email = models.EmailField(blank=True, null=True, default=None)\n customer_name = models.CharField(max_length = 64, blank=True, null=True, default=None)\n customer_phone = models.CharField(max_length = 48, blank=True, null=True, default=None)\n customer_address = models.CharField(max_length = 128, blank=True, null=True, default=None)\n total_price = models.DecimalField(max_digits=10, decimal_places=2, default=0) #total price for all products in order\n comments = models.TextField(blank=True, null=True, default=None)\n status = models.ForeignKey(Status, on_delete=models.PROTECT)\n created = models.DateTimeField(auto_now_add=True, auto_now=False)\n updated = models.DateTimeField(auto_now_add=False, auto_now=True)\n\n def __str__(self):\n return "\xd0\x97\xd0\xb0\xd0\xba\xd0\xb0\xd0\xb7 %s %s" % (self.id, self.status.name)\n\n class Meta:\n verbose_name = "\xd0\x97\xd0\xb0\xd0\xba\xd0\xb0\xd0\xb7"\n verbose_name_plural = "\xd0\x97\xd0\xb0\xd0\xba\xd0\xb0\xd0\xb7\xd1\x8b"\n\n def save(self, *args, **kwargs):\n super(Order, self).save(*args, **kwargs)\nRun Code Online (Sandbox Code Playgroud)\n\n我的观点.py .
\n\ndef checkout(request):\n session_key = request.session.session_key\n products_in_basket = ProductInBasket.objects.filter(session_key=session_key, is_active=True)\n form = CheckoutContactForm(request.POST or None)\n if request.POST:\n print(request.POST)\n if form.is_valid():\n print("OK")\n data = request.POST\n name = data.get("name", "34343434")\n phone = data["phone"]\n user, created = User.objects.get_or_create(username=phone, defaults={"first_name": name})\n\n order = Order.objects.create(user=user, customer_name=name, customer_phone=phone, status_id=1)\n for name, value in data.items():\n if name.startswith("product_in_basket_"):\n product_in_basket_id = name.split("product_in_basket_")[1]\n product_in_basket = ProductInBasket.objects.get(id=product_in_basket_id)\n\n product_in_basket.nmb = value\n product_in_basket.order = order\n product_in_basket.save(force_update=True)\n\n ProductInOrder.objects.create(\n product=product_in_basket.product, \n nmb=product_in_basket.nmb, \n price_per_item=product_in_basket.price_per_item, \n total_price=product_in_basket.total_price, \n order=order\n )\n\n else:\n print("ERROR")\n return render(request, \'orders/checkout.html\', locals())\nRun Code Online (Sandbox Code Playgroud)\n\n错误:
\n\nTraceback (most recent call last):\n File "C:\\Users\\Nikita Shuliak\\AppData\\Local\\Programs\\Python\\Python37- \n 32\\lib\\site-packages\\django-2.1rc1-py3.7.egg\\django\\core\\handlers\\exception.py", line 34, in inner\n response = get_response(request)\n File "C:\\Users\\Nikita Shuliak\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django-2.1rc1-py3.7.egg\\django\\core\\handlers\\base.py", line 126, in _get_response\n response = self.process_exception_by_middleware(e, request)\n File "C:\\Users\\Nikita Shuliak\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django-2.1rc1-py3.7.egg\\django\\core\\handlers\\base.py", line 124, in _get_response\n response = wrapped_callback(request, *callback_args, **callback_kwargs)\n File "C:\\Users\\Nikita Shuliak\\Desktop\\NJB\\startup\\orders\\views.py", line 59, in checkout\n order = Order.objects.create(user=user, customer_name=name, customer_phone=phone, status_id=1)\n File "C:\\Users\\Nikita Shuliak\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django-2.1rc1-py3.7.egg\\django\\db\\utils.py", line 89, in __exit__\n raise dj_exc_value.with_traceback(traceback) from exc_value\n File "C:\\Users\\Nikita Shuliak\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django-2.1rc1-py3.7.egg\\django\\db\\backends\\base\\base.py", line 239, in _commit\n return self.connection.commit()\ndjango.db.utils.IntegrityError: FOREIGN KEY constraint failed\nRun Code Online (Sandbox Code Playgroud)\n\n状态模型编辑
\n\n也许问题就出在这里。我添加了一些代码后出现了问题,您可以在评论中看到这些代码。“最后一个错误表明 pk=1 的 Status 已经存在,但您之前的错误表明相反。请将您的 Status 模型添加到您的问题中;让我们看看是否还有其他条件需要考虑。”:
\n\nclass Status(models.Model):\n name = models.CharField(max_length = 16, blank=True, null=True, default=None)\n is_active = models.BooleanField(default=True)\n created = models.DateTimeField(auto_now_add=True, auto_now=False)\n updated = models.DateTimeField(auto_now_add=False, auto_now=True)\n\n def __str__(self):\n return "\xd0\xa1\xd1\x82\xd0\xb0\xd1\x82\xd1\x83\xd1\x81 %s" % self.name\nRun Code Online (Sandbox Code Playgroud)\n
错误在行中:
order = Order.objects.create(user=user, customer_name=name, customer_phone=phone, status_id=1)
Run Code Online (Sandbox Code Playgroud)
您必须传递该字段的状态实例,
我纠正了,它可以工作;看到这个帖子。status因为它是一个ForeignKey字段。仅设置status_id为整数是行不通的。
发生错误的原因可能是user(or user_id) 或status(or status_id) 引用了相关数据库表中不存在的实例。
您确定有 的状态pk=1吗?手术Status.objects.get(pk=1)成功吗?
| 归档时间: |
|
| 查看次数: |
26250 次 |
| 最近记录: |