TypeError: Поле 'amount' ожидало число, но получило datetime.datetime(2022, 3, 27, 10, 46, 51, 801087, tzinfo=datetime.timezone.utc)

Я думаю, что я сделал что-то неправильно и мне нужно удалить его. но я не могу это исправить. Как я могу это сделать?

<
  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

Удалите базу данных и все миграции

и попробуйте еще раз

Перейдите к вашему файлу миграций. Измените field = models.ForeignKey(default = django.utils.timezone.now) на default = 1 в файле миграций. Запустите миграции снова. Это должно исправить ошибку.

  1. Зайдите в папку migrations, найдите миграцию, связанную с полем "amount" и удалите ее.

  2. Запустите миграции с помощью команды "python manage.py makemigrations". На этот раз, когда от вас требуется указать значение по умолчанию в консоли, не указывайте 'timezone.now'; вместо этого укажите любое целое число по вашему выбору (например, 100), потому что поле amount ожидает целочисленное значение, а не 'timezone.now'

    .
  3. затем запустите команду python manage.py migrate.

    .

Примечание:если вы получаете ошибку типа django.db.migrations.exceptions.InconsistentMigrationHistory: Миграция admin.0001_initial была применена до ее зависимости main_app.0001_initial на базе данных 'default', просто выполните следующую команду: rm db.sqlite3 для удаления базы данных ;makemigrations (с помощью команды python manage.py makemigrations) и запустите миграции с помощью python manage.py migrate, как указано выше.

Вернуться на верх