我想显示当前登录用户创建的所有预订。
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'
如何仅显示当前登录用户创建的预订。任何指导都表示赞赏。
答案 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)