如何解决Django 迁移问题:字段 ID 期望一个数字但得到“中国”
我将项目模型中 Country 字段的默认值设置为“China”。然后我尝试迁移,我显示了一个错误,应该在每个字段中设置一个默认值。我已经完成了,但是在下一个迁移命令之后,我收到了一个错误“字段 ID 期望是一个数字,但得到了‘中国’”,但我将默认值更改为 '4'。
P.S.:我不在任何地方使用 Model.objects.filter()。我只使用模型。
这是我的models.py:
from django.db import models
from django.contrib.auth.models import User
from django.db.models.deletion import CASCADE
from slugger import AutoSlugField
class Item(models.Model):
title = models.CharField(max_length=128)
price = models.DecimalField(max_digits=7,decimal_places=2,default='0')
color = models.ForeignKey('Color',on_delete=CASCADE,default='White')
category = models.ForeignKey('Category',default='SOMECATEGORY')
age = models.ForeignKey('Age',default='0')
description = models.CharField(max_length=5000,default='')
in_stock = models.BooleanField(default=True)
country = models.ForeignKey('Country',default='4') # here was default value China
slug = AutoSlugField(populate_from='title',default='')
def __str__(self):
return self.title
class Color(models.Model):
color = models.CharField(max_length=32)
def __str__(self):
return self.color
class Category(models.Model):
category = models.CharField(max_length=64)
class Meta:
verbose_name_plural = 'Categories'
def __str__(self):
return self.category
class Country(models.Model):
country = models.CharField(max_length=64)
class Meta:
verbose_name_plural = 'Countries'
def __str__(self):
return self.country
class Age(models.Model):
age = models.CharField(max_length=32)
class Meta:
verbose_name_plural = 'Ages'
def __str__(self):
return self.age
解决方法
这可能是因为它一直在尝试运行您将默认值设置为 "China"
时生成的迁移。只需查看您的 migrations.py 文件以查看哪个文件包含您的 default="China"
并删除该文件和它下面的文件,然后再次运行 python manage.py makemigrations
和 migrate
(同时确保您在评论中提到的默认值为 0 或 4)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。