我想我做错了什么,我需要删除它。但我不能修复它。我该怎么做呢?
我进行迁移时出现此错误
File "C:\Users\HP\Desktop\venv\lib\site-packages\django\db\models\fields\__init__.py", line
1990, in get_prep_value
raise e.__class__(
TypeError: Field 'amount' expected a number but got datetime.datetime(2022, 3, 27, 10, 46,
51, 801087, tzinfo=datetime.timezone.utc).
(venv) C:\Users\HP\Desktop\markon>
models.py
class Product(models.Model):
name = models.CharField(max_length=100)
category = models.ForeignKey(Category, on_delete=models.DO_NOTHING)
images = models.ImageField(upload_to='product/%Y/%m/%d/')
detail = models.TextField()
keywords = models.CharField(max_length=50)
description = models.CharField(max_length=100)
price = models.FloatField()
sale = models.FloatField(blank=True, null=True)
amount = models.IntegerField(blank=True, null=True)
available = models.BooleanField(default=True)
date_created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
迁移文件中的0008_product_amount.py错误文件
# Generated by Django 4.0.3 on 2022-03-27 10:46
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('product', '0007_remove_product_amount'),
]
operations = [
migrations.AddField(
model_name='product',
name='amount',
field=models.DateTimeField(blank=True, null=True),
),
]
3条答案
按热度按时间ttcibm8c1#
删除数据库和所有迁移
并重试
ahy6op9u2#
转到您的迁移文件。在迁移文件中将field = models.ForeignKey(default = django.utils.timezone.now)更改为default = 1。再次运行迁移。这样应该可以修复错误。
qjp7pelc3#
1.进入迁移文件,查看与“金额”字段相关的迁移并将其删除。
1.使用“python manage.py makemigrations”命令运行迁移。此时,当您需要提供默认值时,请不要提供timezone.now;而是提供您想要的任何整数,因为金额字段需要整数值,而不是timezone.now。
1.您将看到迁移的更新,然后运行manage.py commigrate命令。
注意:如果你得到类似django.db.migrations.exceptions.InconsistentMigrationHistory的错误:迁移admin.0001_initial在其依赖项main_app.0001_initial应用于数据库'default'之前,只需运行以下命令:rm db.sqlite3删除数据库并重复“makemigrations-migrate”过程