Python 当我使用wagtail时,如何在数据库中保存韩语?
如果我在使用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):
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