Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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 当我使用wagtail时,如何在数据库中保存韩语?_Python_Mysql_Django_Content Management System_Wagtail - Fatal编程技术网

Python 当我使用wagtail时,如何在数据库中保存韩语?

Python 当我使用wagtail时,如何在数据库中保存韩语?,python,mysql,django,content-management-system,wagtail,Python,Mysql,Django,Content Management System,Wagtail,如果我在使用wagtail表单时用韩语创建表单,那么如何解决用英语存储数据的问题?我可以通过更改依赖项来解决这个问题,但我想通过更改应用程序模型中的代码来解决这个问题 return str(slugify(str(unidecode(self)in site packages/wagtail/contrib/forms/models.label))此部分返回str(self.label)此更改已保存,但我不想更改依赖项的代码 class FormField(AbstractFormField):

如果我在使用wagtail表单时用韩语创建表单,那么如何解决用英语存储数据的问题?我可以通过更改依赖项来解决这个问题,但我想通过更改应用程序模型中的代码来解决这个问题

return str(slugify(str(unidecode(self)
in site packages/wagtail/contrib/forms/models.label))此部分返回str(self.label)此更改已保存,但我不想更改依赖项的代码

class FormField(AbstractFormField):
    page = ParentalKey('FormPage', on_delete=models.CASCADE, related_name='form_fields')


class FormPage(AbstractEmailForm, Page):
    intro = RichTextField(blank=True)
    thank_you_text = RichTextField(blank=True)

    content_panels = AbstractEmailForm.content_panels + [
        FieldPanel('intro', classname="full"),
        InlinePanel('form_fields', label="Form fields"),
    ]

    def get_context(self, request, *args, **kwargs):
        context = super(FormPage, self).get_context(request, *args, **kwargs)

        results = dict()
        data_fields = [
            (field.label, field.label)
            for field in self.get_form_fields()
        ]

        user = int(request.user.id)
        data_list = []
        submissions = self.get_submission_class().objects.filter(page=self, user_id=user)

        for submission in submissions:
            data = submission.get_data()
            data_list.append(data)
            data_list.reverse()
            for name, label in data_fields:
                answer = data.get(label)
                if answer is None:
                    continue

                if type(answer) is list:
                    answer = u', '.join(answer)
                question_stats = results.get(label, {})
                question_stats[answer] = question_stats.get(answer, 0) + 1
                results[label] = question_stats
        context.update({
            'results': results,
            'data_list': data_list,
        })

        return context

    def get_data_fields(self):
        data_fields = [
            ('username', 'Username'),
        ]
        data_fields += super().get_data_fields()

    def get_submission_class(self):
        return CustomFormSubmission

    def process_form_submission(self, form):
        self.get_submission_class().objects.create(
            form_data=json.dumps(form.cleaned_data, ensure_ascii=False),
            page=self, user=form.user
        )

    def get_form_class_for_step(self, step):
        return self.form_builder(step.object_list).get_form_class()

    def serve(self, request, *args, **kwargs):

        session_key_data = 'survey_data-%s' % self.pk
        is_last_step = False
        step_number = request.GET.get('p', 1)

        paginator = Paginator(self.get_form_fields(), per_page=1)
        try:
            step = paginator.page(step_number)
        except PageNotAnInteger:
            step = paginator.page(1)
        except EmptyPage:
            step = paginator.page(paginator.num_pages)
            is_last_step = True

        if request.method == 'POST':
            prev_step = step if is_last_step else paginator.page(step.previous_page_number())

            prev_form_class = self.get_form_class_for_step(prev_step)
            prev_form = prev_form_class(request.POST, page=self, user=request.user)

            if prev_form.is_valid():
                survey_data = request.session.get(session_key_data, {})
                survey_data.update(prev_form.cleaned_data)
                user = request.user

                request.session[session_key_data] = survey_data

                if prev_step.has_next():
                    form_class = self.get_form_class_for_step(step)
                    form = form_class(page=self, user=request.user)
                else:
                    form = self.get_form(
                        request.session[session_key_data],
                        page=self, user=request.user
                    )

                    if form.is_valid():
                        self.process_form_submission(form)
                        print(form)
                        del request.session[session_key_data]
                        return render(
                            request,
                            self.landing_page_template,
                            self.get_context(request)
                        )
            else:
                form = prev_form
                step = prev_step
        else:
            form_class = self.get_form_class_for_step(step)
            form = form_class(page=self, user=request.user)

        context = self.get_context(request)
        context['form'] = form
        context['fields_step'] = step

        return render(
            request,
            self.template,
            context
        )


class CustomFormSubmission(AbstractFormSubmission):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

    def get_data(self):
        form_data = super().get_data()
        form_data.update({
            'username': self.user.username,
            'page': self.page,
        })

        return form_data