在我的模特中我有
Person:
name
Sneaker:
owner(FK) = Person.id
size
colour
Booking:
customer(FK) = Person.id
sneaker(FK) = Sneaker.id
time
price
逻辑是在一个人登录后,他可以开始为他的一个运动鞋预订服务。我将客户设置为request.user是没有问题的。但不知何故,在创建预订视图时,可以看到所有运动鞋记录在数据库中(包括他和其他客户'),但我希望客户只能选择自己的运动鞋。我能限制一下吗?我的创建视图如下所示。 THX!
class Booking_Create_View(CreateView):
fields = ['sneaker','time','price']
model = Booking
def form_valid(self, form):
form.instance.customer = self.request.user
return super(Booking_Create_View, self).form_valid(form)
success_url = reverse_lazy("booking_system:index")
答案 0 :(得分:2)
您需要创建一个自定义BookingCreateForm,接受用户kwarg并过滤查询集:
<强> forms.py 强>
LAlt & *::Suspend, On
LShift::LButton
LAlt::RButton
<强> views.py 强>
class BookingCreateForm(forms.ModelForm):
class Meta:
model = Booking
fields = ['sneaker', 'time', 'price']
def __init__(self, *args, **kwargs):
user = kwargs.pop('user')
super().__init__(*args, **kwargs)
self.fields['sneaker'].queryset = Sneaker.objects.filter(owner=user)