TypeError at / Поле 'id' ожидало число, но получило ... django

Привет всем программистам, я Django Developer, когда я запускаю свой сайт без учетной записи, сервер получил эту ошибку: TypeError at / Field 'id' expected a number but got >.

Мой файл views.py имеет следующий вид:

def homepage(request):
    if request.user.is_authenticated:
        print("ok")
        user = request.user
        posts = Posts.objects.all()
        sortedk = sorted(posts, key= lambda f: f.lan(), reverse=True)
        comments = []
        pictures = []
        com = []
        comments_pictures = []
        for i in sortedk:
            lst = []
            id = i.id
            poste = Comments.objects.filter(post_name_id = id)
            com.append(poste)
            num = len(poste)
            prf = Profile.objects.get(id = i.writer_id)
            pictures.append(prf.avator)
            comments.append(num)
            for comment in poste:
                idh = comment.author_id
                kk = Profile.objects.get(id = idh)
                lst.append(kk.avator)
            comments_pictures.append(lst)
        print(comments_pictures)
    
        if request.method == "POST":
            form = CommentForms(request.POST)
            if form.is_valid():
            
                ns = form.save(commit=False)
                ns.author = user
                ns.post_name_id = int(request.POST.get("pk")[0])
                ns.save()
                return redirect('home:homepage')
        
        else:
            form  = CommentForms()
        cont = {
            "user":user,
            "posts":sortedk,
            'comments':comments,
            "pictures":pictures,
            "pos":com,
            "form":form,
            "comment_pictures":comments_pictures,
        }
        return render(request, 'home/home.html',cont)
    else:
        return render(request, "home/home.html")

Пожалуйста, помогите мне в этом.

Как я могу это исправить? Есть ли какой-нибудь способ?

Ошибка, с которой вы столкнулись, скорее всего, связана с попыткой получить атрибут id из i.writer_id, когда i.writer_id является SimpleLazyObject, представляющим объект AnonymousUser. Вам следует убедиться, что i.writer_id не является AnonymousUser, прежде чем пытаться получить профиль с помощью Profile.objects.get(id=i.writer_id).

if hasattr(i.writer_id, 'id'):#or any method you want to verify i.writer_id
    # Check if i.writer_id has an 'id' attribute
    prf = Profile.objects.get(id=i.writer_id.id)
    pictures.append(prf.avator)
else:
   pictures.append(None)  # Set a default value or handle accordingly
Вернуться на верх