所以我的模型包括:
class Place(models.Model):
....
created_by = models.ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)
我的观点是这样的:
class PlaceFormView(CreateView):
form_class = PlaceForm
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(PlaceFormView, self).dispatch(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
有没有办法让我访问request.user并将created_by设置为该用户?我查看了文档,但似乎无法找到任何暗示.
`
我正在尝试使用jQuery UI自动完成功能传递城市和州的额外参数.我一直试图找到一个答案,但似乎找不到适合我的东西.
我目前的代码是:
$(document).ready(function () {
$("#id_place").autocomplete({
source: function(request, response) {
$.ajax({
url: "/autocomplete_place",
dataType: "json",
data: {
term: request.term,
city: $("id_city").val(),
state: $("id_state").val(),
test: 4
},
success: function(data) {
response(data);
}
});
},
});
});
Run Code Online (Sandbox Code Playgroud)
自动完成功能正常,但它没有将我的城市和州参数传递给该功能.如果我输入v它请求URL:/autocomplete_place?term=v&test=4
我猜测它对val()城市和州的评估(document).ready()并获得这些表格字段的空白值?我认为将源代码转换为ajax函数可以解决这个问题,但也许不会.
有任何想法吗?
因此,我的目标是能够在ModelForm中过滤ModelChoiceField查询集,只包含request.user创建的Places.
我的ModelForm很简单:
class PlaceEventForm(models.ModelForm):
class Meta:
model = Event
Run Code Online (Sandbox Code Playgroud)
我希望能够添加如下内容:
def __init__(self, *args, **kwargs):
super(PlaceEventForm, self).__init__(*args, **kwargs)
self.fields['place'].queryset = Place.objects.filter(created_by=request.user)
Run Code Online (Sandbox Code Playgroud)
但是,我似乎找不到在ModelForm中访问请求的方法.
我的观点是这样的:
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)
Run Code Online (Sandbox Code Playgroud)
我不确定这是否接近我应该做的,但我试过:
def get_form_kwargs(self):
kwargs = super(PlaceEventFormView, self).get_form_kwargs()
kwargs.update({'place_user': self.request.user})
return kwargs
Run Code Online (Sandbox Code Playgroud)
但是我得到了错误:init()得到了一个意外的关键字参数'place_user'
关于这个的任何想法?或者,任何人都可以想到一种方法来过滤我的ModelChoiceField在视图中,而无需将我的请求传递给ModelForm?