отображать количество комментариев для UserProfile в Django - PullRequest
0 голосов
/ 14 апреля 2011

Как мне подключить мою модель UserProfile к комментариям пользователя? В моем UserProfileAdmin я хотел бы показать количество комментариев для каждого пользователя. Есть идеи?

Спасибо!

РЕДАКТИРОВАТЬ: Моя модель:

class UserProfile(models.Model):
    GENDER_CHOICES = (
                      ('M', _('Male')),
                      ('F', _('Female')))
    user = models.ForeignKey(User, unique=True)
    location = models.CharField(max_length=50)
    gender = models.CharField(max_length=2, choices=GENDER_CHOICES, blank=True, null=True)
    birthdate = models.DateField(blank=True, null=True)
    website = models.URLField(blank=True)
    description = models.TextField(blank=True)

Я также хотел бы отобразить список комментариев пользователя при просмотре профиля пользователя. Поскольку я использую встроенную систему комментариев Django, есть ли ярлык для этого? Или я должен сделать что-то вроде Comments.objects.filter(user=user) что-то подобное?

Ответы [ 2 ]

3 голосов
/ 14 апреля 2011
UserProfile.user.comment_comments.count()

должен это сделать.

Вы можете обернуть это в метод вашей модели профиля

def count_comments(self):
    if self.user:
        return self.user.comment_comments.count()

и добавьте count_comments к опции list_display в ModelAdmin.


Если вы хотите получить список комментариев пользователя, вы можете настроить метод соответствующим образом:

def get_comments(self):
    if self.user:
        return self.user.comment_comments.all()

Тогда вы можете сделать:

User.objects.get(pk=1).comment_comments.all()

или

UserProfile.objects.get(pk=1).get_comments()
1 голос
/ 14 апреля 2011

При регистрации администратора (или если вы создаете пользовательское) просто используйте поле типа UserComments.filter(user).count() Трудно сказать, не зная, как выглядят ваши модели.но основная идея состоит в том, чтобы направить это поле в комментарии конкретного пользователя и использовать .count().Я мог бы обновить свой ответ (или другие ответили бы лучше), если бы вы предоставили больше кода.

ОБНОВЛЕНИЕ: извините, забыл документы.Для .count(): http://docs.djangoproject.com/en/dev/ref/models/querysets/#count
для фильтров: http://docs.djangoproject.com/en/dev/ref/models/querysets/#filter
для регистрации admin: http://docs.djangoproject.com/en/dev/ref/contrib/admin/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...