Вызывающий пользователь следовать / список подписчиков в Джанго - PullRequest
0 голосов
/ 02 июля 2018

Привет Джангонаутс, Я пытаюсь получить список пользователей в шаблонах (например, Instagram «A» следует «B»). Я попробовал почти все, что я не могу назвать это в шаблонах. Что я делаю не так

Мои модели (Это патч обезьяны для модели Django User)

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    #other profile fields


class Contact(models.Model):
    user_from = models.ForeignKey(User, related_name='supporter')
    user_to = models.ForeignKey(User, related_name='leader')

    def __str__(self):
        return '{} follows {}'.format(self.user_from, self.user_to)


User.add_to_class(
    'following',
    models.ManyToManyField(
        'self', 
        through=Contact, 
        related_name='followers', 
        symmetrical=False))

Мои взгляды (не уверен, что это правильно)

def get_context_data(self, **kwargs):
    context = super(ProfileView, self).get_context_data(**kwargs)
    context['follows'] = Contact.objects.filter(
        user_from__isnull=False,
        user_from__username__iexact=self.kwargs.get('username'))
    context['followers'] = Contact.objects.filter(
        user_to__isnull=False,
        user_to__username__iexact=self.kwargs.get('username'))
    return context

Мои шаблоны

{{user}} follows {{user.supporter.count}} members #This works shows the correct number
        {% for contact in Contact.objects.all %}
            {{contact.user_to.username}} # I am not able to get this part to work
        {% endfor %}

1 Ответ

0 голосов
/ 02 июля 2018

Бит, который не работает - это цикл, потому что Contact не определен в шаблоне. Но я не понимаю, почему вы думаете, что вам нужно получить к нему доступ. Вы должны пройти через поле «многие ко многим» для пользователя:

{% for follow in user.following.all %} 
    {{ follow.username }}
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...