如何在与第一个模型(父模型)数据库实体相关的关系模型中插入记录

安库什保罗

在这里,我有两个单独的模型“用户”模型和“事件”模型。事件模型与用户模式有关。现在我想要做的是,当用户填写事件表单并提交时,应该只创建与该用户相关的事件记录。

视图.py

class EventCreationForm(View):
    template_eventcreationform = 'eventcreationform.html'
    form_class = EventForm

    def get(self, request):
        form = self.form_class(None)
        return render(request, self.template_eventcreationform, {'form': form})

    def post(self, request):
        # data is here
        form = self.form_class(request.POST)
        if form.is_valid():
            event = form.save(commit=False)
            user = User.objects.get(
                #######################################################
                #####            currently logged user            #####
                ###   what should i put here to get current user?   ###
                #######################################################
            )
            form.user = user.email
            event_name = form.cleaned_data.get('event_name')
            event_date_time = form.cleaned_data.get('event_date_time')
            event_address = form.cleaned_data.get('address')
            event.save()
            message = 'Event added'
            return render(request, 'base.html', {'message': message})
        else:
            message = 'Invalid form data, try again'
            form = self.form_class(None)
            return render(request, self.template_eventcreationform, {'message': message, 'form': form})
阿拉斯代尔

首先,您可能希望使用,LoginRequiredMixin以便只有登录用户才能访问该视图。

from django.contrib.auth.mixins import LoginRequiredMixin

class EventCreationForm(LoginRequiredMixin, View):

您可以使用 访问登录用户self.request.user

    if form.is_valid():
        event = form.save(commit=False)
        event.user = self.request.user
        event.save()
        message = 'Event added'
        return redirect('/success-url/')

请注意,最好在保存事件后重定向,以防止重复提交表单。

请注意,您正在复制FormView或 的许多功能CreateView如果您使用这些,您将不必编写那么多代码。

class EventCreationForm(LoginRequiredMixin, CreateView):
    template_name = 'eventcreationform.html'
    form_class = EventForm
    success_url = '/success-url/'  # form_valid() will redirect here

    def form_valid(self, form):
        form.instance.user = self.request.user
        return super(EventCreationForm, self).form_valid(form)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

一个请求有多个模型或数据库?

如何获取另一个模型中定义的猫鼬数据库的架构

实体框架:从Dictionary <TKey,TValue>创建一个模型以映射到数据库表

从Laravel中的hasMany关系返回第一个模型

插入具有数据库中存在的一个相关实体的实体

如何设计大型数据库,实体-关系模型

larvel刀片模板和元素模型-如何获得许多关系中的第一个元素

如何在GraphQL接口上将模型与“具有一个”关系相关联

EF在数据库中创建一个关系ID列,该列不属于模型

如何在Laravel中从第二个模型到第一个模型获取搜索数据?

实体框架模型第一个1:0..1关系

如何在数据库中建立一对多关系模型

Ember JS:如何根据来自第一个模型的数据加载第二个模型

一个项目中的两个数据库是否可以有一个实体模型?

Phalcon:如何获得1-n关系中的第一个模型

使用实体框架时如何在模型中写入属性数据库优先

数据库中模型的单一记录

实体框架“从数据库更新模型,表成为关系

如何在父模型查询中获取与子模型相关的数据

在odoo中如何在另一个模型中创建记录时如何在模型中创建记录

在只有一个模型一对多关系的模型中插入

在Django中,如何获取一个模型的所有实例,而与fk的第一个模型相关的另一个模型的实例不存在?

如何首先从另一个项目C#数据库中的数据模型edmx更新实体

我有两个模型,我想从 Company 模型中访问 Floorsheet 模型的第一个和最后一个“速率”。我如何在 Django 模型中做到这一点?

如何计算Django中同一个模型的两个m2m关系上的相关实体数量

如何在第一个角色死亡时更改角色?,在 UNITY3D 中更改角色模型?

如果一个模型与 Laravel 中的两个模型有关系,如何从数据库中获取数据

Django:如何根据模型所属的多对一关系将模型保存到不同的数据库表中?

Django:如何删除一个模型中的项目并更改链接到第一个模型的另一个模型中的多对多关系?