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

Django model: Filtering by user, always

Documentation: Many-to-one relationships

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

模型

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'


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

最佳答案

您应该重写ListView的get_queryset方法,而不能通过在类上设置静态属性(queryset)来做到这一点。方法如下:

class ReservationListView(LoginRequiredMixin,ListView):
    型号=预订
    context_object_name ='预订'

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

关于python - 过滤由登录用户创建的预订,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37687451/

10-13 05:23