【问题标题】:Django: foreign key (many-to-many) show valueDjango:外键(多对多)显示值
【发布时间】:2022-01-11 09:57:56
【问题描述】:

我有以下简单的 django 模型:

class Account(models.Model):
"""
An account is for a team of users, or a single customer
"""
name = models.CharField(max_length=100, unique=True)
admins = models.ManyToManyField('AccountUser', related_name='+', blank=True)
metadata = models.JSONField(default=dict, blank=True)

def __str__(self):
    return self.name

@property
def customers(self):
    """Accounts linked to this account"""
    return self.linked_accounts.linked_accounts.all()

我正在尝试遍历帐户表并在视图中显示帐户记录:

queryset_account = Account.objects.all()

for account in queryset_account:
    logger.warning(account.name)
    logger.warning(account.admins)

帐户名称显示,但外键管理员未返回任何内容。如何显示管理员的内容?

更新

我已修改代码以纳入 Shreeyansh 的建议:

for account in queryset_account:
    logger.warning('account name: %s', account.name)
    for admin in account.admins.all():
        logger.warning('admin: %s', admin)

但仍然没有为管理员获取值,尽管我的所有帐户都有它们

【问题讨论】:

标签: django logging foreign-keys


【解决方案1】:

由于admins 是多态字段,它将代表对象列表,并且根据您的模型定义,它也可能为空。因此,为了从管理员那里读取值,您需要遍历列表。

print([admin for admin in account.admins.all()])

【讨论】:

  • 您好 Shreeyansh,感谢您抽出宝贵时间回答我的问题。我已修改代码以包含您的建议,但当我知道有管理员与我的帐户相关联时,我仍然得到一个空列表(请参阅更新)
猜你喜欢
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-31
  • 1970-01-01
相关资源
最近更新 更多