簡體   English   中英

我在制作汽車租賃 django Web 應用程序時遇到日期時間錯誤

[英]I'm getting an datetime error while making an car renting django web application

我正在使用 django 創建一個基於 Web 的汽車租賃應用程序。 即使我從代碼中刪除了 datetime 屬性或函數,我也會收到以下錯誤

python manage.py migrate       
Operations to perform:
  Apply all migrations: admin, app, auth, contenttypes, sessions
Running migrations:
  Applying app.0006_cart_car_cart_quantity_cart_renting_date_and_more...Traceback (most recent call last):
  File "D:\Rushikesh\Code\car_rent\quickrents\manage.py", line 22, in <module>
    main()
  File "D:\Rushikesh\Code\car_rent\quickrents\manage.py", line 18, in main 
    execute_from_command_line(sys.argv)
  File "D:\Rushikesh\Code\car_rent\ecp\lib\site-packages\django\core\management\__init__.py", line 446, in execute_from_command_line
    utility.execute()
  File "D:\Rushikesh\Code\car_rent\ecp\lib\site-packages\django\core\management\__init__.py", line 440, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "D:\Rushikesh\Code\car_rent\ecp\lib\site-packages\django\core\management\base.py", line 414, in run_from_argv
    self.execute(*args, **cmd_options)
  File "D:\Rushikesh\Code\car_rent\ecp\lib\site-packages\django\core\management\base.py", line 460, in execute
    output = self.handle(*args, **options)
  File "D:\Rushikesh\Code\car_rent\ecp\lib\site-packages\django\core\management\base.py", line 98, in wrapped
    res = handle_func(*args, **kwargs)
  File "D:\Rushikesh\Code\car_rent\ecp\lib\site-packages\django\core\management\commands\migrate.py", line 290, in handle
    post_migrate_state = executor.migrate(
  File "D:\Rushikesh\Code\car_rent\ecp\lib\site-packages\django\db\migrations\executor.py", line 131, in migrate
    state = self._migrate_all_forwards(
  File "D:\Rushikesh\Code\car_rent\ecp\lib\site-packages\django\db\migrations\executor.py", line 163, in _migrate_all_forwards
    state = self.apply_migration(
  File "D:\Rushikesh\Code\car_rent\ecp\lib\site-packages\django\db\migrations\executor.py", line 248, in apply_migration
    state = migration.apply(state, schema_editor)
  File "D:\Rushikesh\Code\car_rent\ecp\lib\site-packages\django\db\migrations\migration.py", line 131, in apply
    operation.database_forwards(
  File "D:\Rushikesh\Code\car_rent\ecp\lib\site-packages\django\db\migrations\operations\fields.py", line 108, in database_forwards
    schema_editor.add_field(
  File "D:\Rushikesh\Code\car_rent\ecp\lib\site-packages\django\db\backends\sqlite3\schema.py", line 381, in add_field
    self._remake_table(model, create_field=field)
  File "D:\Rushikesh\Code\car_rent\ecp\lib\site-packages\django\db\backends\sqlite3\schema.py", line 230, in _remake_table
    self.effective_default(create_field)
  File "D:\Rushikesh\Code\car_rent\ecp\lib\site-packages\django\db\backends\base\schema.py", line 410, in effective_default
    return field.get_db_prep_save(self._effective_default(field), self.connection)
  File "D:\Rushikesh\Code\car_rent\ecp\lib\site-packages\django\db\models\fields\__init__.py", line 910, in get_db_prep_save
    return self.get_db_prep_value(value, connection=connection, prepared=False)
  File "D:\Rushikesh\Code\car_rent\ecp\lib\site-packages\django\db\models\fields\__init__.py", line 1546, in get_db_prep_value
    value = self.get_prep_value(value)
  File "D:\Rushikesh\Code\car_rent\ecp\lib\site-packages\django\db\models\fields\__init__.py", line 1524, in get_prep_value
    value = super().get_prep_value(value)
  File "D:\Rushikesh\Code\car_rent\ecp\lib\site-packages\django\db\models\fields\__init__.py", line 1403, in get_prep_value
    return self.to_python(value)
  File "D:\Rushikesh\Code\car_rent\ecp\lib\site-packages\django\db\models\fields\__init__.py", line 1485, in to_python
    parsed = parse_datetime(value)
  File "D:\Rushikesh\Code\car_rent\ecp\lib\site-packages\django\utils\dateparse.py", line 114, in parse_datetime
    return datetime.datetime.fromisoformat(value)
TypeError: fromisoformat: argument must be str

我嘗試使用 datetime 函數制作My_Orders頁面,但得到了同樣的錯誤。

所以我刪除了日期時間代碼,使它像以前一樣,但也得到了同樣的錯誤。

無法解決這個問題。

當我嘗試運行它正在執行的代碼時。

但警告如下進行 6 次遷移。

這是顯示剩余 6 個遷移的圖像

但是當我嘗試進行遷移時,會彈出上述錯誤。

這是我的 models.py 文件中的代碼。

from django.db import models
from django.contrib.auth.models import User
from django.core.validators import MaxValueValidator, MinValueValidator
STATE_CHOICE = (
    ('Maharashtra','Maharashtra'),
    ('Rajasthan','Rajasthan'),
    ('Delhi','Delhi'),
    ('Tamil Nadu','Tamil Nadu'),
    ('Madhya Pradesh','Madhya Pradesh'),
    ('Gujrat','Gujrat'),
)
class Customer(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    name = models.CharField(max_length=200)
    locality = models.CharField(max_length=200)
    city = models.CharField(max_length=50)
    zipcode = models.IntegerField()
    state = models.CharField(choices=STATE_CHOICE, max_length=50)
    mobile = models.IntegerField()

    def __str__(self):
        return str(self.id)

CATEGORY_CHOICES = (
    ('H','HATCHBACK'),
    ('S','SEDAN'),
    ('SUV','SUV'),
    ('MUV','MUV'),
)

class Car(models.Model):
    title = models.CharField(max_length=100)
    renting_price = models.FloatField()
    description = models.TextField()
    mileage=models.CharField(max_length=2)
    brand = models.CharField(max_length=50)
    category = models.CharField(choices=CATEGORY_CHOICES, max_length=3)
    car_image = models.ImageField(upload_to='carimg')

    def __str__(self):
        return str(self.id)

class My_Orders(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    car = models.ForeignKey(Car, on_delete=models.CASCADE)
    quantity = models.PositiveIntegerField(default=1)


    def __str__(self):
        return str(self.id)
    
STATUS_CHOICES = (
    ('Accepted','Accepted'),
    ('On The Way','On The Way'),
    ('Delivered','Delivered'),
    ('Cancel','Cancel'),
)

class OrderPlaced(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
    car = models.ForeignKey(Car, on_delete=models.CASCADE)
    quantity = models.PositiveIntegerField(default=1)
    status = models.CharField(max_length=50,choices=STATUS_CHOICES,default='Pending')

    def __str__(self):
        return str(self.id)

遷移文件 1

    operations = [
        migrations.AddField(
            model_name='cart',
            name='car',
            field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='app.car'),
            preserve_default=False,
        ),
        migrations.AddField(
            model_name='cart',
            name='quantity',
            field=models.PositiveIntegerField(default=1),
        ),
        migrations.AddField(
            model_name='cart',
            name='renting_date',
            field=models.DateTimeField(default=1),
            preserve_default=False,
        ),
        migrations.DeleteModel(
            name='My_Order',
        ),
    ]

遷移文件 2

    operations = [
        migrations.AlterField(
            model_name='cart',
            name='renting_date',
            field=models.DateField(),
        ),
    ]

遷移文件 3

    operations = [
        migrations.AddField(
            model_name='orderplaced',
            name='ordered_date',
            field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now),
            preserve_default=False,
        ),
    ]

我的項目的 GitHub 鏈接https://github.com/Rushikesh53/car-renting.git

您似乎對模型中不再存在的字段有遷移錯誤。 解決此問題的最簡單方法是清除所有現有遷移並從頭開始重新創建一個新遷移。 您將丟失所有數據,但由於您的項目仍在開發中,因此應該可以使用該方法。

您可以使用以下命令執行此操作:

python manage.py migrate app_name zero

現在刪除所有遷移文件

最后,重新創建新的遷移並應用它。

python manage.py makemigrations
python manage.py migrate

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM