Necesito que si el usuario solicita obtener la siguiente página, la respuesta de la solicitud sería la página que contiene publicaciones específicas realizadas por los usuarios seguidos por el usuario que solicita. Pensé en hacer algunas acciones para hacer esto:
En mis modelos.py:
class User(AbstractUser): image_url = models.CharField(max_length=5000, null=True) class Follow(models.Model): follower = models.ForeignKey( User, on_delete=models.PROTECT, related_name="follower") following = models.ForeignKey( User, on_delete=models.PROTECT, related_name='following') class Post(models.Model): content = models.CharField(max_length=140) date_created = models.DateTimeField(auto_now_add=True) poster = models.ForeignKey(User, on_delete=models.CASCADE)En mis vistas.py:
def following_page(request, username): user = User.objects.get(username=username) f = user.following.all() posts = Post.objects.filter(poster=f.following) posts = posts.order_by("-date_created").all() return render(request, 'network/index.html', { "posts": posts })Dice
El objeto AttributeError 'QuerySet' no tiene atributo 'siguiente'
¿Debería cambiar el modelo? ¿Como resolver el problema?
Puedes filtrar con:
from django.contrib.auth.decorators import login_required @login_required def following_page(request): posts = Post.objects.filter( poster__following__follower=request.user ) return render(request, 'network/index.html', { 'posts': posts }) Dado que usa el usuario que inició sesión, uno usa request.user y, por lo tanto, no tiene sentido que la vista acepte un nombre de usuario.
Nota : puede limitar las vistas a una vista para usuarios autenticados con el decorador
@login_required[Django-doc] .
Nota : normalmente es mejor hacer uso de la
settings.AUTH_USER_MODEL[Django-doc] para referirse al modelo de usuario, que usar el modeloUser[Django-doc] directamente. Para obtener más información, puede consultar la referencia a la sección Modelo deUserde la documentación .