#django #django-models #django-rest-framework #django-views #django-forms
#django #django-модели #django-rest-framework #django-просмотры #django-forms
Вопрос:
Я снова задаю этот вопрос, потому что я не получил удовлетворительного ответа в своей предыдущей попытке. Мне может быть трудно полностью передать проблему, которую я пытаюсь решить, но я сделаю все возможное, чтобы дать четкое и краткое объяснение.
Я пытаюсь выполнить запрос, который извлекает список подписчиков, а также список подписчиков и подписчиков для каждого подписчика. Я включил изображение, которое иллюстрирует эту структуру. В настоящее время я использую следующий код, чтобы попытаться это сделать, но он не дает ожидаемых результатов. Можете ли вы помочь мне понять, что я делаю неправильно и как я могу правильно выполнить этот запрос?
views.py
def get_context_data(self, *args, **kwargs):
context = super(FollowerView,self).get_context_data(*args, **kwargs)
user = context['user']
user_com = User.objects.get(username=user)
myfollowers = user_com.is_following.all()
followers_Array =[]
followerings_Array =[]
for target_list in myfollowers:
user_obj = User.objects.get(username=target_list)
followers_obj = user_obj.is_following.all()
print(followers_obj,'name o ki line')
followerings_Array.append(followerings_Array)
print(followers_obj,user_obj)
followerings_obj = user_obj.userprofile.follower.all()
followerings_Array.append(followerings_obj)
print(followerings_obj,user_obj)
print(followerings_Array,'arry one one one ')
context['myfollowers_data']= followers_Array
context['myfollowerings_data']= followerings_Array
return context
В настоящее время я использую два массива в своем коде, но я бы предпочел избежать этого, если это возможно. Моя текущая реализация не дает желаемого результата, когда я возвращаю массивы в контексте. Можете ли вы предложить альтернативный подход, который позволяет мне отображать данные так, как показано на рисунке, и можете ли вы просмотреть шаблон подписчиков, чтобы увидеть, допускаю ли я там какие-либо ошибки?
{% for follower in user.is_following.all %}
<div class="followers-body">
<img class="img-responsive img-circle" src="{{follower.avatar.url}}" alt="">
<div class="name-box">
<h4>{{follower}}</h4>
<span>@{{follower}}</span>
<div class="followers-base">
<ul class="list-group">
<li class="list-group-item full-width">
<div class="pull-left" style="margin-right: 20px;">
{% if myfollowers_data %}
{% for user in myfollowers_data %}
<img src="{{user.userprofile.avatar.url}}" alt="" class="img-circle max-w-40 ">
{% endfor %}
{% endif %}
<span> {{myfollowers_data.count}} Followers </span>
</div><!--/ pull-left -->
</li>
<li class="list-group-item full-width">
<div class="pull-left">
{% for usr in myfollowerings_data %}
<img src="{{usr.userprofile.avatar.url}}" alt="" class="img-circle max-w-40 ">
{% endfor %}
<span> {{myfollowerings_data|length}} Following </span>
</div><!--/ pull-right -->
</li><!--/ list-group-item -->
</ul>
</div><!--/ followers-base -->
</div><!--/ name-box -->
<span><a href="#" class="kafe-btn kafe-btn-mint-small"> Follow</a></span>
</div><!--/ followers-body -->
{% endfor %}
models.py
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
follower = models.ManyToManyField(User, related_name ='is_following',blank=True,)
close_friends = models.ManyToManyField(User,related_name='my_close_friends', blank=True)
rank = models.ManyToManyField(Rank, related_name='rank', default='Newbie', blank=True)
avatar = models.ImageField(("Avatar"), upload_to='displays', default = '1.jpg',height_field=None, width_field=None, max_length=None,blank = True)
create_date = models.DateField(auto_now_add=True,null=True)
@property
def email_address(self):
return self.user.email
objects = ProfileManager()
def __str__(self):
return f'{self.user.username}'
def get_absolute_url(self):
return reverse("profiles:final_detail", kwargs={"username": self.user.username})
Если требуется больше кода, чем сообщите мне в сеансе комментариев. Я обновлю свой вопрос с этой информацией.
Комментарии:
1. Можете ли вы поделиться своей структурой модели?
2. Проверьте мой вопрос, я только что обновил свой вопрос и добавил модель
3. Итак, вы хотите просмотреть список подписчиков пользователя и каждого из подписчиков подписчика в шаблоне? это все?
4. Да, как я показываю на картинке
5. подписчики и подписчики каждого подписчика также
Ответ №1:
Хорошо, все это должно быть достижимо из шаблона:
template.html:
<!-- users followers -->
{% for follower1 in user.is_following.all %}
<img src="{{ follower1.avatar.url }}"/>
<!-- followers followers -->
{% for follower2 in follower1.is_following.all %}
<img src="{{ follower2.avatar.url }}"/>
...
{% endfor %}
{% endfor %}
Комментарии:
1.
follower.my_followers.all
ничего не возвращает в шаблоне.2. Ну, я просто повторял ваш код — но, похоже, вы назвали это поле просто
follower
, такfollower.follower.all
что должно сработать — см. Мои правки.3. Ничего не отображается вообще — или просто второй цикл не работает?
4. Просто ничего не печатает
5. У меня там был тип — я исправил его сейчас — хотите проверить еще раз?