【问题标题】:Django, how to modify output of a related model serizlizer?Django,如何修改相关模型序列化器的输出?
【发布时间】:2020-11-12 19:29:23
【问题描述】:

我有一个模型有几个ForeignKeys:

class Employee(models.Model):
    company = models.ForeignKey(Company, on_delete=models.CASCADE, related_name="staff", null=False, blank=False)
    user = models.ForeignKey(to=User, blank=False, null=False, on_delete=models.CASCADE)
    roles = models.ManyToManyField(to=Role, blank=False)

如何在 Employee 模型中使用来自 CompanyUser 的字段?我需要它们用于__str__

【问题讨论】:

  • self.company.name?
  • 那行得通……但我试过了,但没有用:/
  • 这里我假设Company 具有 .name 属性。您当然只能引用 Company 类中存在的字段/属性/方法。

标签: sql django django-models


【解决方案1】:

您可以将这些作为self.companyself.user 的属性访问,因为self.company 将返回Company 对象。

因此您可以使用:

class Employee(models.Model):
    company = models.ForeignKey(
        Company,
        on_delete=models.CASCADE,
        related_name='staff'
    )
    user = models.ForeignKey(
        User,
        on_delete=models.CASCADE
    )
    roles = models.ManyToManyField(Role)

    def __str__(self):
        return f'{self.company} {self.user.username}'

注意:通常使用settings.AUTH_USER_MODEL [Django-doc] 引用用户模型比直接使用User model [Django-doc] 更好。更多信息可以查看referencing the User model section of the documentation

【讨论】:

  • 非常感谢。我错过了最简单的解决方案:)
猜你喜欢
  • 2023-03-25
  • 1970-01-01
  • 2014-02-15
  • 2017-01-20
  • 2016-09-17
  • 1970-01-01
  • 2018-01-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多