Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在关系模型中插入与第一个模型(父模型)数据库实体相关的记录_Python_Django_Django Models_Django Views - Fatal编程技术网

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

Python 如何在关系模型中插入与第一个模型(父模型)数据库实体相关的记录,python,django,django-models,django-views,Python,Django,Django Models,Django Views,在这里,我有两个独立的模型“用户”模型和“事件”模型。事件模型与用户模式相关。现在我想做的是,当一个用户填写事件表单并提交时,那么应该只针对该用户创建事件记录 views.py class EventCreationForm(View): template_eventcreationform = 'eventcreationform.html' form_class = EventForm def get(self, request): form = s

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

views.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})

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

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/')
请注意,最好在保存事件后重定向,以防止重复提交表单

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

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)

我对jango是新来的,所以如果我先弄清楚基本知识,然后再使用速记会更好。