我是Django的新手,主要是通过教程。我试图创建一个具有作者字段的模型。在我进行迁移过程并使用makemigrations的某个时刻,我在控制台中收到一系列消息,说明我需要为模型中的许多字段设置默认值。所以对于作者我放了default='someauthor'
。
我后来删除了这些默认值,仍然对为什么会发生这种情况感到困惑。然后,我经历了“makemigrations'再次,这些消息不再提示我。我忘了我做了什么来改变它。
然而,当我尝试迁移&python manage.py migrate'我收到这个错误:
ValueError: invalid literal for int() with base 10: 'someauthor'
我已删除对"默认='某些作者'"''''''''但是这个错误仍然存在。我将补充一点,我有两个模型,每个模型都引用一个作者:
author = models.ForeignKey(User, related_name='tutorial_posts')
和
author = models.ForeignKey(User, related_name='blog_posts')
我觉得这导致了这个问题。有什么建议吗?
答案 0 :(得分:1)
ForeignKey字段存储来自另一个表的id,默认情况下为NodeID = {% CurrentDocument.NodeID %}
。如果您将默认值添加为int
,则无法将其转换为int并为您提供此错误:
string
您可以在控制台中尝试检查:
ValueError: invalid literal for int() with base 10: 'someauthor'
我建议您使用默认的int值或设置In [3]: int('someauthor')
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-3-3c4d496afcf9> in <module>()
----> 1 int('someauthor')
ValueError: invalid literal for int() with base 10: 'someauthor'
:
null=True
答案 1 :(得分:0)
我遇到了同样的问题,无法进行其他任何迁移
我能够通过在项目目录中搜索作为默认值传递的字符串来解决,在您的情况下为'someauthor'
您应该能够在Migrations文件夹中找到一个.py迁移文件。
`
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('accounts', '0004_auto_20191221_2233'),
]
operations = [
migrations.RemoveField(
model_name='useraccount',
name='username',
),
migrations.AddField(
model_name='useraccount',
name='user',
field=models.ForeignKey(default='string', on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
preserve_default=False,
),
]`
将default='string'
更改为1