Vì vậy, mục tiêu của tôi là có thể lọc bộ truy vấn ModelChoiceField trong ModelForm của tôi để chỉ bao gồm Địa điểm mà request.user đã tạo.Gửi đối tượng request.user đến ModelForm từ chế độ xem chung dựa trên lớp ở Django
My ModelForm chỉ đơn giản là:
class PlaceEventForm(models.ModelForm):
class Meta:
model = Event
Tôi muốn để có thể thêm một cái gì đó như:
def __init__(self, *args, **kwargs):
super(PlaceEventForm, self).__init__(*args, **kwargs)
self.fields['place'].queryset = Place.objects.filter(created_by=request.user)
Tuy nhiên, tôi dường như không thể tìm thấy một cách để truy cập theo yêu cầu trong ModelForm.
My View là như vậy:
class PlaceEventFormView(CreateView):
form_class = PlaceEventForm
template_name = 'events/event_create.html'
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(PlaceEventFormView, self).dispatch(*args, **kwargs)
Tôi không chắc chắn nếu điều này thậm chí còn gần với những gì tôi nên làm, nhưng tôi đã cố gắng:
def get_form_kwargs(self):
kwargs = super(PlaceEventFormView, self).get_form_kwargs()
kwargs.update({'place_user': self.request.user})
return kwargs
Nhưng tôi đã nhận lỗi: init() có đối số từ khóa không mong muốn 'place_user'
Bất kỳ ý tưởng nào về vấn đề này? Hoặc bất cứ ai có thể nghĩ ra một cách để lọc ModelChoiceField của tôi trong xem mà không cần phải vượt qua yêu cầu của tôi để ModelForm?
Cảm ơn rất nhiều! Hoạt động hoàn hảo. – Brian
Gặp sự cố khi hiểu cách bạn thực hiện việc này. –
Tôi đã làm ví dụ hoàn chỉnh, cho tôi biết nếu nó vẫn chưa rõ ràng –