【问题标题】:Django model field through linked relationshipDjango模型字段通过链接关系
【发布时间】:2021-03-22 10:33:33
【问题描述】:

有没有办法在模型中创建一个“虚拟”字段,链接到关系中的字段?

例如我有:

class User(models.Model):
   organization = models.ForeignKey(
        "Organization", ...
    )

组织模型有一个字段name

所以我想在User 模型中添加一个虚拟字段(例如organization_name),以便能够执行user.organization_name 而不是user.organization.name

有可能吗?

【问题讨论】:

  • 向你的类添加一个作为属性的方法? (通过@property装饰方法)
  • 感谢@AbdulAzizBarkat!这就是我现在正在做的事情。想知道是否还有其他为什么要这样做..但这也可以正常工作
  • 我不会那样做——这只会在你以后在 ORM 中做 select_relatedprefetch_related 时造成混乱。只需使用点符号 - 有什么问题?

标签: python django model


【解决方案1】:

你可以annotate这个值。例如:

from django.db.models import F

for u in User.objects.annotate(name=F('organization__name')):
    print(u.name)

【讨论】:

  • 这是一种更好的方法,因为它与 ORM 的使用保持一致,
猜你喜欢
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-22
  • 1970-01-01
相关资源
最近更新 更多