小编err*_*ona的帖子

Django:如何使用 ORM 连接没有外键的列

我 \xc2\xb4m 是 Django 和 Python 的新手,我可以 \xc2\xb4t 得到这个问题的解决方案,所以任何帮助都是值得赞赏的!

\n\n

I\xc2\xb4m 尝试连接 Django 中的数据库列,这些列确实有相应的值,但该值不是外键。

\n\n

让\xc2\xb4s 说我的模型是:

\n\n
class Order(models.Model):\n   order_id = models.AutoField(primary_key=True)\n   oOrder_number = models.CharField(max_length=50)\n   ...\n
Run Code Online (Sandbox Code Playgroud)\n\n

\n\n
class Shipment(models.Model):\n  dShipment_id = models.AutoField(primary_key=True)\n  dTo_order = models.CharField(max_length=10)\n  ...\n
Run Code Online (Sandbox Code Playgroud)\n\n

我所知道的是,我可以使用 Djangoselect_related命令从与外键连接的表中获取值。

\n\n

但这是我的问题:我不能在我的模型中使用外键,其原因源于通过我的 API 推送数据的第三方软件。该软件无法存储所创建订单的返回值并将其用作发货的标识符(...)。

\n\n

所以最后这是我的问题:是否可以对相同的字段oOrder_number和进行一些连接dTo_order

\n\n

我想要的结果是,我可以选择某个订单并从 Shipment 表中获取所有连接的货件,这些货件都具有相同的 dTo_order。

\n\n

我知道如何在 Larvel 和 MySQL Querie 中执行此操作,但据我所知,\xc2\xb4s 不是“Djangoish”来使用原始查询...。

\n\n

对此有什么想法吗?

\n\n

谢谢阅读!如果我遗漏了一些内容,我将很乐意提供所有必要的信息!:)

\n\n

编辑:我知道我可以尝试一种解决方法,通过在订单表中搜索 To_order 字段并获取其主键来获取发货订单的外部。不过我很好奇 Django 中是否有更优雅的解决方案。

\n\n

更新:

\n\n …

python mysql django django-models

6
推荐指数
1
解决办法
6592
查看次数

Django 迁移:未反映更改 | 仅创建 id

I\xc2\xb4m 尝试使用 django 2.1 迁移我的新模型。\n由于某种原因它只创建id列。

\n\n

完成此操作后,我得到以下奇怪的行为:

\n\n

进行迁移用户界面:

\n\n
No changes detected in app 'ui'\n
Run Code Online (Sandbox Code Playgroud)\n\n

迁移用户界面

\n\n
No 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.\n
Run Code Online (Sandbox Code Playgroud)\n\n

按照 cli I\xc2\xb4m 的说明进行操作,最终陷入循环。

\n\n

这是我的 models.py

\n\n
from 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)

python migration django

3
推荐指数
1
解决办法
1624
查看次数

Django:CSRF Coo​​kie 未在 iframe 中设置——没有 csrf 豁免的解决方法

我的项目正在几个 3rd 方站点上部署 iframe,这些站点在 django 应用程序中都是已知和注册的。

在这些 iframe 中,用户可以触发一些 ajax-form 事件。直接打开网站,一切正常。如果我打开包含 iframe 的 3rd 方站点,django 在触发 ajax 事件(403)后会抛出错误,说 CSRF 失败。

在表单中,我使用了在 html 中设置的 {% csrf_token %}。但是在通过 iframe 调用站点时并没有设置相应的 cookie(发现两者都在浏览器中使用检查模式)。

我知道我可以使用装饰器@csrf_exempt,但这会同时禁用 csrf 保护,这是我不想做的。

所以我的问题是:

  1. 当整个页面通过 iframe 加载时,为什么 django 不设置 CSRF Coo​​kie?
  2. 是否可以让 django 设置 cookie 或者是否可以只从 csrf 中免除已知的 url?
  3. 有没有我看不到的方法?

非常感谢您的时间!:)

django iframe csrf

3
推荐指数
2
解决办法
3366
查看次数

标签 统计

django ×3

python ×2

csrf ×1

django-models ×1

iframe ×1

migration ×1

mysql ×1