Django-一个模型不能具有多个AutoField

问题描述 投票:2回答:2

这个问题开始随机出现在我身上。我知道Django会生成自己的ID,但是我的许多代码一直在使用自定义的AutoFields,而该AutoFields一直在工作。我今天添加了一个新课程,并尝试进行迁移,但是此错误不断出现。

我直接删除了AutoFields的所有实例并尝试迁移,但是问题仍然存在,这使我相信这是另一回事...我完全不相信我的Django版本已更改...

错误:

    Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Python34\lib\site-packages\django\core\management\__init__.py", line
338, in execute_from_command_line
    utility.execute()
  File "C:\Python34\lib\site-packages\django\core\management\__init__.py", line
330, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Python34\lib\site-packages\django\core\management\base.py", line 390,
 in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Python34\lib\site-packages\django\core\management\base.py", line 441,
 in execute
    output = self.handle(*args, **options)
  File "C:\Python34\lib\site-packages\django\core\management\commands\makemigrat
ions.py", line 98, in handle
    loader.project_state(),
  File "C:\Python34\lib\site-packages\django\db\migrations\loader.py", line 326,
 in project_state
    return self.graph.make_state(nodes=nodes, at_end=at_end, real_apps=list(self
.unmigrated_apps))
  File "C:\Python34\lib\site-packages\django\db\migrations\graph.py", line 231,
in make_state
    project_state = self.nodes[node].mutate_state(project_state, preserve=False)

  File "C:\Python34\lib\site-packages\django\db\migrations\migration.py", line 8
3, in mutate_state
    operation.state_forwards(self.app_label, new_state)
  File "C:\Python34\lib\site-packages\django\db\migrations\operations\fields.py"
, line 51, in state_forwards
    state.reload_model(app_label, self.model_name_lower)
  File "C:\Python34\lib\site-packages\django\db\migrations\state.py", line 152,
in reload_model
    self.apps.render_multiple(states_to_be_rendered)
  File "C:\Python34\lib\site-packages\django\db\migrations\state.py", line 262,
in render_multiple
    model.render(self)
  File "C:\Python34\lib\site-packages\django\db\migrations\state.py", line 546,
in render
    body,
  File "C:\Python34\lib\site-packages\django\db\models\base.py", line 189, in __
new__
    new_class.add_to_class(obj_name, obj)
  File "C:\Python34\lib\site-packages\django\db\models\base.py", line 324, in ad
d_to_class
    value.contribute_to_class(cls, name)
  File "C:\Python34\lib\site-packages\django\db\models\fields\__init__.py", line
 989, in contribute_to_class
    "A model can't have more than one AutoField."
AssertionError: A model can't have more than one AutoField.

这是我其中一个领域的示例:

assetid = models.AutoField(primary_key=True)

我的许多代码已经取决于名称本身,因此更改它将是一个大问题。此外,这之前工作得很好!我似乎现在无法迁移。我应该提到使用sqlite3数据库的即时消息。

python django models
2个回答
1
投票

已删除迁移文件和最新历史记录并进行了修复。


0
投票

这是因为Django默认情况下将id用作AutoField。因此,如果要将其他字段设为AutoField,请确保确认primary_key = True。这样做将从数据库中删除id字段。

我已经使用Mysql作为数据库。确保此问题可能无法在其他数据库中解决。

© www.soinside.com 2019 - 2024. All rights reserved.