Подсчет и добавление отфильтрованных связанных объектов в Django - PullRequest
1 голос
/ 29 марта 2011

Я пытаюсь подсчитать количество объектов, имеющих отношение внешнего ключа к другому объекту и у которых флаг удален = 0.

User имеет отношение к иностранному ключу к Accounts в моделях:

class Account(models.Model):
    ...
    def __unicode__(self):
        return self.organisation

class User(models.Model):
    ...
    account = models.ForeignKey("Account", null=True, blank=True)
    deleted = models.BooleanField(blank=False)

В views для каждой учетной записи я хотел бы показать количество пользователей, которые подключены к учетной записи, которые также удалили = 0.

Вот лучшее, что я мог сделать:

@login_required
def accounts(request):
    try:
        accounts = Account.objects.all().filter(deleted=0)
        users = User.objects.all().filter(deleted=0)
    except:
        raise Http404

    account_users = {'a':'a'}
    for account in accounts:
        account_users[account.id] = User.objects.all().filter(deleted=0).filter(account = account.id)

    variables = RequestContext(request, {
    'accounts':accounts,
    'users':users,
    'account_users':account_users,
    })
    return render_to_response('accounts/accounts.html', variables)

Выше я использую словарь, содержащий account.id => non-deleted user count. Проблема в том, что я не могу перебрать ключ словаря в шаблоне ...

Спасибо за любую помощь.

1 Ответ

1 голос
/ 29 марта 2011

Для перебора словаря используйте метод items(). Возвращает итератор для пар (ключ, значение).

for k, v in dictionary.items():
   do_something_with(k,v)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...