所有
我想使用Listview仅显示用户的照片列表而不是其他用户的照片列表。但它不起作用。用户可以获得其他用户的照片。
这是views.py
class PhotoListView(ListView):
model = Photo
def get(self, *args, **kwargs):
#if user connect to other user's page, go to the user's page.
if kwargs['username'] != self.request.user.username:
return redirect('index')
#to get only user's photo list.
username = self.request.user.username
return super(PhotoListView, self).get(username=username, *args, **kwargs)
这是model.py
class Photo(models.Model):
user = models.ForeignKey(User)
image_file = ProcessedImageField(upload_to='%Y/%m/%d/orig', format='JPEG', options={'quality': 100})
source = TaggableManager(through=Taggedsource, related_name='source')
subject = TaggableManager(through=Taggedsubject, related_name='subject')
description = models.TextField(max_length=500, blank=True)
comments = models.PositiveSmallIntegerField(default=0, null=True)
posted_on = models.DateTimeField(default=datetime.now)
答案 0 :(得分:1)
您应该修改get_queryset
方法:
class PhotoListView(ListView):
model = Photo
def get_queryset(self):
photos = super().get_queryset()
username = self.request.user.username
photos = photos.objects.filter(user=username)
return photos
def get(self, *args, **kwargs):
#if user connect to other user's page, go to the user's page.
if kwargs['username'] != self.request.user.username:
return redirect('index')
答案 1 :(得分:1)
在views.py
中class PhotoListView(ListView):
model = Photo
def get(self, *args, **kwargs):
#if user connect to other user's page, go to the user's page.
if kwargs['username'] != self.request.user.username:
return redirect('index')
#to get only user's photo list.
username = self.request.user.username
photos = Photo.objects.filter(user=username)
return photos
Photo.objects.filter(user=username)
只会获得该用户的照片。