相关疑难解决方法(0)

在基于类的通用视图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万
查看次数

如何在CreateView的form_valid方法中引发错误

在Django项目中,我有一个视图(云),类型:CreateView.此视图具有inlineformset_factory.有用.但是,如果我提交带有错误的表单(请查看下面的"messages.error"),页面将重定向到project.get_absolute_url().问题是:表单内容回空.我知道那是因为HttpResponseRedirect.

如何在不破坏表格的情况下更改此内容?

views.py

class cloud(CreateView):
    template_name = 'base/cloud.html'
    form_class = UserForm

    def get_context_data(self, **kwargs):
        context = super(cloud, self).get_context_data(**kwargs)
        project = get_object_or_404(Project, slug=self.kwargs['slug'])
        context['project'] = project
        if self.request.POST:
            context['formset'] = IdeaFormset(self.request.POST or None)
        else:
            context['formset'] = IdeaFormset()
        return context

    def form_valid(self, form, **kwargs):
        project = get_object_or_404(Project, slug=self.kwargs['slug'])
        context = self.get_context_data()
        formset = context['formset']

        if formset.is_valid():
            self.object = form.save()
            formset.instance = self.object #IdeaFormFormSet

            nouns = project.nouns().values_list('content', flat=True)
            verbs = project.verbs().values_list('content', flat=True)
            error = False
            for form in formset.forms: #For each Idea
                form.instance.project …
Run Code Online (Sandbox Code Playgroud)

python django django-views

8
推荐指数
1
解决办法
5712
查看次数