【发布时间】:2021-06-09 16:32:01
【问题描述】:
我正在尝试在 Django 中创建一个简单的模型。预期的字段是一些文本和所有者的用户 ID。但是,当我执行 manage.py migrate 时会发生这种情况(makemigrations 工作没有错误)。我将不胜感激任何线索!
Running migrations:
Applying manage_remittance.0001_initial... OK
Applying manage_remittance.0002_remittance_owner...Traceback (most recent call last):
...
ValueError: invalid literal for int() with base 10: 'default'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
...
ValueError: Field 'id' expected a number but got 'default'.
models.py
from django.db import models
from django.contrib.auth.models import User
class Remittance(models.Model):
owner = models.ForeignKey(User, on_delete=models.CASCADE)
remittance_text = models.CharField(max_length=140)
def __str__(self):
return self.remittance_text
admin.py
from django.contrib import admin
from .models import Remittance
admin.site.register(Remittance)
0002_remittance_owner.py(我不知道为什么会出现这种情况,因为我迁移回版本零,然后使用 models.py 进行了 makemigrations,如上所示):
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),
('manage_remittance', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='remittance',
name='owner',
field=models.ForeignKey(default='default', on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
]
【问题讨论】:
-
请分享
0002_remittance_owner迁移文件。看起来你在那里设置了一个没有意义的默认值。 -
` 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) , ('manage_remittance', '0001_initial'), ] 操作 = [ migrations.AddField(model_name='remittance', name='owner', field=models.ForeignKey(default='default', on_delete=django.db.models .deletion.CASCADE, to=settings.AUTH_USER_MODEL), ), ] `
-
请edit提问。
-
您是否在运行 makemigrations 时提供了任何默认值?
-
不,我没有。我刚刚跑了
manage.py makemigrations,然后跑了manage.py migrations。此时数据库应该是空的。