过滤由登录用户创建的预订

时间:2016-06-07 19:09:49

标签: python django django-views django-queryset

我想显示当前登录用户创建的所有预订。

Django model: Filtering by user, always

Documentation: Many-to-one relationships

是我检查的一些链接,但仍然无法解决问题。

Model.py

class Reservation(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.CASCADE)
    pickup_date = models.DateField()
    pickup_time = models.TimeField(blank=True, null=True)
    drop_date = models.DateField()
    drop_time = models.TimeField(blank=True, null=True)
    drop_location = models.CharField(blank=False, max_length=250, choices=LOCATIONS_CHOICES)
    reserved_on = models.DateTimeField(auto_now_add=True)
    edited_on = models.DateTimeField(auto_now=True)

views.py

class ReservationList(LoginRequiredMixin,ListView):
    model = Reservation
    context_object_name = 'reservations'
    queryset= Reservation.objects.filter(user=request.user)

urls.py

    url(r'^reservations/$', ReservationList.as_view(), name='reservations_list'),

运行服务器时出现此错误

   AttributeError: 'module' object has no attribute 'user'

如何仅显示当前登录用户创建的预订。任何指导都表示赞赏。

1 个答案:

答案 0 :(得分:1)

您应该覆盖ListView的get_queryset方法,不能通过在类上设置静态属性(queryset)来实现。以下是如何做到这一点:

class ReservationListView(LoginRequiredMixin, ListView):
    model = Reservation
    context_object_name = 'reservations'

    def get_queryset(self):
        return Reservation.objects.filter(user=self.request.user)