在"model"上应用 makmigrate 时没有问题,但迁移命令抛出异常"error"



在"模型"上应用 makmigration 时没有问题,但迁移命令抛出异常"错误" ValueError:int() 的文字无效,底数为 10:"null"。 当我在"emails_for_help"帮助字段进行更改时出现此错误 我尝试了fake_migration并迁移了,但没有用

class Setup_user(models.Model):
organization=models.CharField(max_length=200,blank=False,default="")
email_id=models.EmailField(unique=True)
CEO = 'CEO'
GENERAL_MANAGER = 'GM'
JCHOICES = (
(CEO, 'CEO'),
(GENERAL_MANAGER, 'General Manager'),
)
Designation = models.CharField(max_length=5,choices=JCHOICES)
LEVEL1 = "L1"
LEVEL2 = "L2"
LCHOICES = (
(LEVEL1,"Level 1"),
(LEVEL2,"Level 2"),
)
job_level=models.CharField(max_length=2,choices=LCHOICES)
EMAIL_CHOICES = ((str(q.email), str(q.email)) for q in User.objects.all())
emails_for_help = MultiSelectField(choices=EMAIL_CHOICES,default="null",max_length=5000,help_text="select with whom you want to share knowledge")
def __str__(self):
return self.email_id

错误:

C:UsersEkatech7PycharmProjectsbaseproject>python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, pkm_app, sessions
Running migrations:
Applying pkm_app.0015_auto_20180417_1723...Traceback (most recent call 
last):
File "manage.py", line 15, in <module>
execute_from_command_line(sys.argv)
File "C:UsersEkatech7PycharmProjectsbaseprojectvenvlibsite- 
packagesdjangocoremanagement__init__.py", line 371, in 
execute_from_command_line
utility.execute()
File "C:UsersEkatech7PycharmProjectsbaseprojectvenvlibsite- 
packagesdjangocoremanagement__init__.py", line 365, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:UsersEkatech7PycharmProjectsbaseprojectvenvlibsite- 
packagesdjangocoremanagementbase.py", line 288, in run_from_argv
self.execute(*args, **cmd_options)
File "C:UsersEkatech7PycharmProjectsbaseprojectvenvlibsite- 
packagesdjangocoremanagementbase.py", line 335, in execute
output = self.handle(*args, **options)
File "C:UsersEkatech7PycharmProjectsbaseprojectvenvlibsite- 
packagesdjangocoremanagementcommandsmigrate.py", line 200, in handle
fake_initial=fake_initial,
File "C:UsersEkatech7PycharmProjectsbaseprojectvenvlibsite- 
packagesdjangodbmigrationsexecutor.py", line 117, in migrate
state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, 
fake_initial=fake_initial)
File "C:UsersEkatech7PycharmProjectsbaseprojectvenvlibsite- 
packagesdjangodbmigrationsexecutor.py", line 147, in 
_migrate_all_forwards
state = self.apply_migration(state, migration, fake=fake, 
fake_initial=fake_initial)
File "C:UsersEkatech7PycharmProjectsbaseprojectvenvlibsite- 
packagesdjangodbmigrationsexecutor.py", line 244, in apply_migration
state = migration.apply(state, schema_editor)
File "C:UsersEkatech7PycharmProjectsbaseprojectvenvlibsite- 
packagesdjangodbmigrationsmigration.py", line 122, in apply
operation.database_forwards(self.app_label, schema_editor, old_state, 
project_state)
File "C:UsersEkatech7PycharmProjectsbaseprojectvenvlibsite- 
packagesdjangodbmigrationsoperationsfields.py", line 84, in 
database_forwards
field,
File "C:UsersEkatech7PycharmProjectsbaseprojectvenvlibsite- 
packagesdjangodbbackendssqlite3schema.py", line 306, in add_field
self._remake_table(model, create_field=field)
File "C:UsersEkatech7PycharmProjectsbaseprojectvenvlibsite  - 
packagesdjangodbbackendssqlite3schema.py", line 178, in _remake_table
self.effective_default(create_field)
File "C:UsersEkatech7PycharmProjectsbaseprojectvenvlibsite- 
packagesdjangodbbackendsbaseschema.py", line 224, in effective_default
default = field.get_db_prep_save(default, self.connection)

文件 "C:\Users\Ekatech7\PycharmProjects\baseproject\venv\lib\site- packages\django\db\models\fields\related.py",第 936 行,get_db_prep_save 返回 self.target_field.get_db_prep_save(value, connection=connection) 文件 "C:\Users\Ekatech7\PycharmProjects\baseproject\venv\lib\site- packages\django\db\models\fields__init__.py",第 767 行,get_db_prep_save 返回self.get_db_prep_value(值,连接=连接,准备=假) 文件 "C:\Users\Ekatech7\PycharmProjects\baseproject\venv\lib\site- packages\django\db\models\fields__init__.py",第 939 行,在 get_db_prep_value 值 = self.get_prep_value(值) 文件 "C:\Users\Ekatech7\PycharmProjects\baseproject\venv\lib\site- packages\django\db\models\fields__init__.py",第 947 行,get_prep_value 返回 int(值) ValueError:int() 的文字无效,基数为 10:"null">

您的CHOICES没有”null”作为选项。如果要存储空值,则必须设置null=True,这意味着当blank=TruemodelField时,空值将存储为空值。如果您只是希望表单在加载时不选择选项,请不要设置default。错误正在寻找这个:

EMAIL_CHOICES = (
(“null”, “null”)
(str(q.email), str(q.email)
)

我认为你的for循环也是倒退的。我认为应该是:

for q in User.objects.all():
(str(q.email), str(q.email)

问题已解决。 我在上述模型中选择的方法是一个错误的错误。 它可以通过对"寻求帮助的电子邮件"列和具有查询集应用程序的模型表单使用多对多关系来解决。

class Set_User_Form(ModelForm):
emails_for_help= forms.ModelMultipleChoiceField(queryset=User.objects.all(),widget=forms.CheckboxSelectMultiple)
class Meta:
model=Setupuser
exclude=["email_id"]

最新更新