Django: внешний ключ (многие-ко-многим) показать значение
У меня есть следующая простая модель 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)
имя учетной записи отображается, но внешний ключ admins не возвращает ничего. Как я могу отобразить содержимое admins?
UPDATE
Я изменил код, чтобы учесть предложение Шреянша:
for account in queryset_account:
logger.warning('account name: %s', account.name)
for admin in account.admins.all():
logger.warning('admin: %s', admin)
но все еще не получаю значения для администраторов, хотя они есть у всех моих аккаунтов
Поскольку admins
является многотомным полем, оно будет представлять список объектов, и в соответствии с определением вашей модели оно может быть пустым. Поэтому для того, чтобы прочитать значения из admins, вам нужно выполнить итерацию по списку.
print([admin for admin in account.admins.all()])