小编Dio*_*ias的帖子

使用与现有字段相同的名称注释新字段

我们现在面临这样的情况,我想获得更有经验的用户\xe2\x80\x99s的意见。我们现在是 Django 4、Python 3.9。

\n

目前的情况:

\n

我们的系统已经在生产中运行了一段合理的时间,我们需要根据用户的选择在后端更改一些返回到我们的前端应用程序(Web、mobile\xe2\x80\xa6)的数据。

\n

重要的是:目前无法选择前端方面的更改。

\n

我们需要根据另一个表上现有或不对应的数据覆盖一个模型中的某些属性。

\n

表格(Django 模型):

\n

AgentSearch(该数据每天都会被 ETL 过程替换)

\n
    \n
  • ID
  • \n
  • 标识符号(唯一)
  • \n
  • 成员名字
  • \n
  • 成员姓氏
  • \n
  • 会员邮箱
  • \n
  • 一些其他属性
  • \n
\n

代理(代理可以定义的可选数据)

\n
    \n
  • ID
  • \n
  • agent_search_identifier_number(FK 一对一)
  • \n
  • \n
  • \n
  • 电子邮件
  • \n
\n

对于我们现在的要求,所有查询集都将从 开始进行AgentSearch。这个想法是获取Agent数据,而不是AgentSearch每次有代理链接到数据时就获取数据。

\n

今天我们得到这样的结果:

\n

AgentSearch.objects.all()

\n

我知道像这样注释新列会更容易:

\n
        # using a different attribute name\n        NEW_member_first_name=Case(\n            When(\n                agent__id__isnull=True,\n                then=F("member_first_name"),\n            ),\n            default=F("agent__first_name"),\n        ),\n
Run Code Online (Sandbox Code Playgroud)\n

这将需要我们对前端进行更改。 …

django django-models django-orm django-views django-rest-framework

5
推荐指数
0
解决办法
878
查看次数