我 \xc2\xb4m 是 Django 和 Python 的新手,我可以 \xc2\xb4t 得到这个问题的解决方案,所以任何帮助都是值得赞赏的!
\n\nI\xc2\xb4m 尝试连接 Django 中的数据库列,这些列确实有相应的值,但该值不是外键。
\n\n让\xc2\xb4s 说我的模型是:
\n\nclass Order(models.Model):\n order_id = models.AutoField(primary_key=True)\n oOrder_number = models.CharField(max_length=50)\n ...\nRun Code Online (Sandbox Code Playgroud)\n\n和
\n\nclass Shipment(models.Model):\n dShipment_id = models.AutoField(primary_key=True)\n dTo_order = models.CharField(max_length=10)\n ...\nRun Code Online (Sandbox Code Playgroud)\n\n我所知道的是,我可以使用 Djangoselect_related命令从与外键连接的表中获取值。
但这是我的问题:我不能在我的模型中使用外键,其原因源于通过我的 API 推送数据的第三方软件。该软件无法存储所创建订单的返回值并将其用作发货的标识符(...)。
\n\n所以最后这是我的问题:是否可以对相同的字段oOrder_number和进行一些连接dTo_order?
我想要的结果是,我可以选择某个订单并从 Shipment 表中获取所有连接的货件,这些货件都具有相同的 dTo_order。
\n\n我知道如何在 Larvel 和 MySQL Querie 中执行此操作,但据我所知,\xc2\xb4s 不是“Djangoish”来使用原始查询...。
\n\n对此有什么想法吗?
\n\n谢谢阅读!如果我遗漏了一些内容,我将很乐意提供所有必要的信息!:)
\n\n编辑:我知道我可以尝试一种解决方法,通过在订单表中搜索 To_order 字段并获取其主键来获取发货订单的外部。不过我很好奇 Django 中是否有更优雅的解决方案。
\n\n更新:
\n\n …I\xc2\xb4m 尝试使用 django 2.1 迁移我的新模型。\n由于某种原因它只创建id列。
完成此操作后,我得到以下奇怪的行为:
\n\n进行迁移用户界面:
\n\nNo changes detected in app 'ui'\nRun Code Online (Sandbox Code Playgroud)\n\n迁移用户界面
\n\nNo migrations to apply. Your models have changes that are not yet reflected in a migration, and so won't be applied. Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.\nRun Code Online (Sandbox Code Playgroud)\n\n按照 cli I\xc2\xb4m 的说明进行操作,最终陷入循环。
\n\n这是我的 models.py
\n\nfrom django.db import models\nfrom django.contrib.auth.models import User\n\n\nclass Customer(models.Model):\n customer_id: models.AutoField(primary_key=True)\n customer_su_object: models.ForeignKey(User, on_delete=models.CASCADE)\n set_customer_mails: …Run Code Online (Sandbox Code Playgroud) 我的项目正在几个 3rd 方站点上部署 iframe,这些站点在 django 应用程序中都是已知和注册的。
在这些 iframe 中,用户可以触发一些 ajax-form 事件。直接打开网站,一切正常。如果我打开包含 iframe 的 3rd 方站点,django 在触发 ajax 事件(403)后会抛出错误,说 CSRF 失败。
在表单中,我使用了在 html 中设置的 {% csrf_token %}。但是在通过 iframe 调用站点时并没有设置相应的 cookie(发现两者都在浏览器中使用检查模式)。
我知道我可以使用装饰器@csrf_exempt,但这会同时禁用 csrf 保护,这是我不想做的。
所以我的问题是:
非常感谢您的时间!:)