Перебор списка пользователей приводит к ошибке "'int' object has no attribute 'username'" в Django
Я работаю над проектом Django, в котором пытаюсь просмотреть список идентификаторов пользователей, чтобы получить их имена. Однако я сталкиваюсь с ошибкой, которая гласит: "'int' object has no attribute 'username'".
Вот мой код:
def Home(request):
profile = Profile.objects.get(user=request.user)
posts = Post_Upload.objects.all()
#show only the user posts you following
user_following_list = FollowersCount.objects.filter(user=request.user).values_list('follower', flat=True)
print(user_following_list)
feed_lists = Post_Upload.objects.filter(user__in=user_following_list)
#user suggestion
all_users = User.objects.all()
all_following_users = []
for users in user_following_list:
try:
user = User.objects.get(username=users.username)
all_following_users.append(user)
except User.DoesNotExist:
# Handle the case where the user does not exist (optional)
pass
new_suggestion = [ x for x in list(all_users) if (x not in list(all_following_users))]
current_user = User.objects.filter(username=request.user.username)
final_suggestion = [x for x in list(new_suggestion) if (x not in list(current_user))]
random.shuffle(final_suggestion)
user_profile = []
user_profile_list = []
for users in final_suggestion:
user_profile.append((users.id))
for ids in user_profile:
profiles = Profile.objects.filter(id=ids)
user_profile_list.append(profiles)
suggestion_user_profile_list = list(chain(*user_profile_list))[:4]
context = {"posts":feed_lists,"profile":profile,"suggestion_user_profile_list":suggestion_user_profile_list}
return render(request,'index.html',context)
Ошибка возникает в этой строке:
user = User.objects.get(username=users.username)
Вы инициализируете свою переменную по адресу
user_following_list = FollowersCount.objects.filter(user=request.user).values_list('follower', flat=True)
values_list возвращает QuerySet и flat=True
гарантирует, что вместо кортежей у вас будут одиночные значения, которые будут представлять follower
, как вы указали. Таким образом, вам нужно будет получить username
тоже и избежать сплющивания:
user_following_list = FollowersCount.objects.filter(user=request.user).values_list('follower', 'username')
(не проверено)