Django Python Shell查询所有十进制对象

2024-09-27 21:32:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在存储拍卖项目,并且我的应用程序在浏览器中成功运行,这意味着我创建的所有拍卖项目都显示了正确的开始和结束日期。这些开始和结束日期被存储为DateTimeFields,存储的是使用datetime.now()的datetime对象,其中包括微秒。例如:

2020-01-20 14:06:22.398123

在python控制台中,我运行以下命令:

from auctionitem.models import AuctionItem

AuctionItems.objects.all()

我收到一个关于无效十进制操作的严重错误:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:\Users\Sir Chris Mazzochi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\models\query.py", line 252, in __repr__
    data = list(self[:REPR_OUTPUT_SIZE + 1])
  File "C:\Users\Sir Chris Mazzochi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\models\query.py", line 258, in __len__
    self._fetch_all()
  File "C:\Users\Sir Chris Mazzochi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\models\query.py", line 1261, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "C:\Users\Sir Chris Mazzochi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\models\query.py", line 74, in __iter__
    for row in compiler.results_iter(results):
  File "C:\Users\Sir Chris Mazzochi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\models\sql\compiler.py", line 1081, in apply_converters
    value = converter(value, expression, connection)
  File "C:\Users\Sir Chris Mazzochi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\backends\sqlite3\operations.py", line 286, in converter
    return create_decimal(value).quantize(quantize_value, context=expression.output_field.context)
decimal.InvalidOperation: [<class 'decimal.InvalidOperation'>]

model.py(用于拍卖项目)

from django.db import models
from django.contrib.auth.models import User
from PIL import Image
import datetime
print("Running for Mazzo")

class AuctionItem(models.Model):

    seller = models.ForeignKey(User, on_delete=models.CASCADE)
    image = models.ImageField(default='default.jpg', upload_to='auction_items')
    title = models.CharField(max_length=100)
    description = models.TextField()

    startBid = models.DecimalField(max_digits=6, decimal_places=2)
    buyNowPrice = models.DecimalField(max_digits=6, decimal_places=2)
    buyNowEnabled = models.BooleanField()
    deliveryCost = models.DecimalField(max_digits=6, decimal_places=2)

    now = datetime.datetime.now()
    now_no_micro = now.replace(microsecond=0)
    startDate = models.DateTimeField(default=now_no_micro)
    tdelta = datetime.timedelta(days=7)
    enDate = now_no_micro + tdelta
    endDate =models.DateTimeField(default=enDate)
    viewCount=models.IntegerField(default=0)

    def __str__(self):
        return self.title

    def save(self):
        super().save()

        img = Image.open(self.image.path)

        if img.height > 300 or img.width > 300:
            output_size = (300, 300)
            img.thumbnail(output_size)
            img.save(self.image.path)

    def incrementViewCount(self):
        print('Hi Chris Mazzochi')
        self.viewCount = self.viewCount + 1
        self.save()

我想知道这个错误所指的小数点是否是datetime对象中的小数点,该对象的微秒后附加了一个“点”、“.”,……这就是我的错误所在吗?我是否需要无微秒存储日期

谢谢, 铁人


Tags: djangoinpyselfdbdatetimemodelsline

热门问题