小编Bri*_*ian的帖子

在基于类的通用视图CreateView中访问request.user,以便在Django中设置FK字段

所以我的模型包括:

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设置为该用户?我查看了文档,但似乎无法找到任何暗示.

`

django django-generic-views django-class-based-views

29
推荐指数
3
解决办法
2万
查看次数

使用Jquery UI自动完成功能将额外参数传递给源代码

我正在尝试使用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函数可以解决这个问题,但也许不会.

有任何想法吗?

jquery jquery-ui jquery-ui-autocomplete

22
推荐指数
1
解决办法
2万
查看次数

从Django中基于类的通用视图向ModelForm发送request.user对象

因此,我的目标是能够在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?

django django-forms django-class-based-views

15
推荐指数
1
解决办法
5991
查看次数