具体报错如下:
(venv) C:\Users\libol\PycharmProjects\day06>python manage.py makemigrations
Migrations for 'jobs':
jobs\migrations\0001_initial.py
- Create model Job
Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "C:\Users\libol\PycharmProjects\day06\venv\lib\site-packages\django\core\management\__init__.py", line 364, in execute_from_comm
and_line
utility.execute()
File "C:\Users\libol\PycharmProjects\day06\venv\lib\site-packages\django\core\management\__init__.py", line 356, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Users\libol\PycharmProjects\day06\venv\lib\site-packages\django\core\management\base.py", line 283, in run_from_argv
self.execute(*args, **cmd_options)
File "C:\Users\libol\PycharmProjects\day06\venv\lib\site-packages\django\core\management\base.py", line 330, in execute
output = self.handle(*args, **options)
File "C:\Users\libol\PycharmProjects\day06\venv\lib\site-packages\django\core\management\commands\makemigrations.py", line 193, in ha
ndle
self.write_migration_files(changes)
File "C:\Users\libol\PycharmProjects\day06\venv\lib\site-packages\django\core\management\commands\makemigrations.py", line 231, in wr
ite_migration_files
migration_string = writer.as_string()
File "C:\Users\libol\PycharmProjects\day06\venv\lib\site-packages\django\db\migrations\writer.py", line 163, in as_string
operation_string, operation_imports = OperationWriter(operation).serialize()
File "C:\Users\libol\PycharmProjects\day06\venv\lib\site-packages\django\db\migrations\writer.py", line 120, in serialize
_write(arg_name, arg_value)
File "C:\Users\libol\PycharmProjects\day06\venv\lib\site-packages\django\db\migrations\writer.py", line 72, in _write
arg_string, arg_imports = MigrationWriter.serialize(item)
File "C:\Users\libol\PycharmProjects\day06\venv\lib\site-packages\django\db\migrations\writer.py", line 293, in serialize
return serializer_factory(value).serialize()
File "C:\Users\libol\PycharmProjects\day06\venv\lib\site-packages\django\db\migrations\serializer.py", line 44, in serialize
item_string, item_imports = serializer_factory(item).serialize()
File "C:\Users\libol\PycharmProjects\day06\venv\lib\site-packages\django\db\migrations\serializer.py", line 229, in serialize
return self.serialize_deconstructed(path, args, kwargs)
File "C:\Users\libol\PycharmProjects\day06\venv\lib\site-packages\django\db\migrations\serializer.py", line 101, in serialize_deconst
ructed
arg_string, arg_imports = serializer_factory(arg).serialize()
File "C:\Users\libol\PycharmProjects\day06\venv\lib\site-packages\django\db\migrations\serializer.py", line 332, in serializer_factor
y
value = force_text(value)
File "C:\Users\libol\PycharmProjects\day06\venv\lib\site-packages\django\utils\encoding.py", line 80, in force_text
s = six.text_type(bytes(s), encoding, errors)
File "C:\Users\libol\PycharmProjects\day06\venv\lib\site-packages\django\utils\functional.py", line 122, in __bytes_cast
return bytes(func(*self.__args, **self.__kw))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
问题截图:
models代码:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
# Create your models here.
import sys
from django.db import models
from django.contrib.auth.models import User
from django.utils.translation import gettext_lazy as _
JobTypes = [
(0, "技术类"),
(1, "产品类"),
(2, "运营类"),
(3, "设计类"),
(4, "市场营销类")
]
Cities = [
(0, "北京"),
(1, "上海"),
(2, "深圳"),
(3, "杭州"),
(4, "广州")
]
class Job(models.Model):
# Translators: 职位实体的翻译
job_type = models.SmallIntegerField(blank=False, choices=JobTypes, verbose_name=_("职位类别"))
job_name = models.CharField(max_length=250, blank=False, verbose_name=_("职位名称"))
job_city = models.SmallIntegerField(choices=Cities, blank=False, verbose_name=_("工作地点"))
job_responsibility = models.TextField(max_length=1024, verbose_name=_("职位职责"))
job_requirement = models.TextField(max_length=1024, blank=False, verbose_name=_("职位要求"))
creator = models.ForeignKey(User, verbose_name=_("创建人"), null=True, on_delete=models.SET_NULL)
created_date = models.DateTimeField(verbose_name=_("创建日期"), auto_now_add=True)
modified_date = models.DateTimeField(verbose_name=_("修改日期"), auto_now=True)
解决办法:
在models中加:
reload(sys)
sys.setdefaultencoding("utf8")
models完整代码如下:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
# Create your models here.
import sys
from django.db import models
from django.contrib.auth.models import User
from django.utils.translation import gettext_lazy as _
reload(sys)
sys.setdefaultencoding("utf8")
JobTypes = [
(0, "技术类"),
(1, "产品类"),
(2, "运营类"),
(3, "设计类"),
(4, "市场营销类")
]
Cities = [
(0, "北京"),
(1, "上海"),
(2, "深圳"),
(3, "杭州"),
(4, "广州")
]
class Job(models.Model):
# Translators: 职位实体的翻译
job_type = models.SmallIntegerField(blank=False, choices=JobTypes, verbose_name=_("职位类别"))
job_name = models.CharField(max_length=250, blank=False, verbose_name=_("职位名称"))
job_city = models.SmallIntegerField(choices=Cities, blank=False, verbose_name=_("工作地点"))
job_responsibility = models.TextField(max_length=1024, verbose_name=_("职位职责"))
job_requirement = models.TextField(max_length=1024, blank=False, verbose_name=_("职位要求"))
creator = models.ForeignKey(User, verbose_name=_("创建人"), null=True, on_delete=models.SET_NULL)
created_date = models.DateTimeField(verbose_name=_("创建日期"), auto_now_add=True)
modified_date = models.DateTimeField(verbose_name=_("修改日期"), auto_now=True)
问题解决:
执行成功!!!