Как получить пост только текущего пользователя в django - PullRequest
0 голосов
/ 04 августа 2020

Я хочу, чтобы все пользователи могли видеть только свой собственный список, и я получаю сообщение об ошибке django, я не знаю почему. Также я хочу создать представление и представление списка на той же странице, что я не могу сделать. Мне тоже нужна помощь в этом. Спасибо

это моя модель.py:-

from django.db import models
from django.contrib.auth import get_user_model
from django.conf import settings
from django.urls import reverse
# Create your models here.


class simpleList(models.Model):
    title = models.CharField(max_length=250)
    author = models.ForeignKey(
        get_user_model(),
        on_delete=models.CASCADE,
    )

    def __str__(self):
        return self.title

это мои views.py:-

from django.shortcuts import render
from django.views.generic import ListView, CreateView
from .models import simpleList
from django.urls import reverse_lazy
# Create your views here.


def ListListView(request):
    current_user = request.author
    user_list = simpleList.objects.filter(user=current_user)
    return render(render, 'templates/list_list.html', {'userlist': user_list})


class CreateList(CreateView):
    model = simpleList
    template_name = 'create_list.html'
    fields = ('title', )
    success_url = reverse_lazy('create_list')

    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)

это мой urls.py:-

from django.urls import path
from .views import ListListView, CreateList

urlpatterns = [
    path('', ListListView, name='list_list'),
    path('create/', CreateList.as_view(), name='create_list'),
]

ошибка, которую я получаю от консоли django: -

AttributeError at /lists/
'WSGIRequest' object has no attribute 'author'

Ответы [ 2 ]

1 голос
/ 04 августа 2020

Ваша проблема проявляется в этих двух строках:

 current_user = request.author
 user_list = simpleList.objects.filter(user=current_user)

В запросе dict нет имени автора.

Это должно быть request.user:

 current_user = request.user
 user_list = simpleList.objects.filter(author=current_user)
1 голос
/ 04 августа 2020

Попробуйте следующее:

def ListListView(request):
    current_user = request.user
    user_list = simpleList.objects.filter(author=current_user)
    return render(render, 'templates/list_list.html', {'userlist': user_list})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...