Django Python Оболочка запрашивает все объекты с десятичной дробью - PullRequest
0 голосов
/ 21 января 2020

Я храню предметы аукциона, и мое приложение успешно работает в браузере. Это означает, что все созданные мной предметы аукциона отображаются с правильными датами начала и окончания. И эти даты начала и окончания хранятся как DateTimeFields, и то, что сохраняется, это объект даты и времени, использующий datetime.now(), который включает в себя микросекунды. Как в:

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 (для AuctionItem)

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 с микросекундами, к которым добавлена ​​точка ','. ', ... это здесь, где моя ошибка? Нужно ли хранить дату без микросекунд?

Спасибо, Ironman

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...