首页 > 解决方案 > 以 10 为底的 int() 的 Django 无效文字:b'11 20:11:22'

问题描述

我想将一个对象从一个模型复制到另一个模型,我是这个 ValueError “invalid literal for int() with base 10: b'11 20:11:22'”

模型:

class TempLog(models.Model):
    user= models.ForeignKey(User, on_delete=models.CASCADE, null=True,)
    start_date  = models.DateTimeField(null=True, blank=True, auto_now=True)
    end_date    = models.DateTimeField(null=True, blank=True)

    def save( self, *args, **kwargs ):
        user= self.user
        entry = TempLog.objects.filter(user=user)
        if entry.exists():
            TempLog.objects.filter(user=user).update(end_date=Now())

所有这些都很好,但如果我这样做:

print(entry)
    #queryset = TempLog.objects.filter(user=user).values('start_date', 'end_date', 'user')
 
    #new_object = [PermanentLog(**values) for values in queryset]

    #PermanentLog.objects.create(new_object)

我需要它们的日期时间格式而不是整数,我怎么能绕过这个?

解决方案:

首先,我不只是“导入日期时间”,而是改为“从日期时间导入日期时间”。

其次,我没有使用auto_now=Trueand Now(),而是使用了;

start_date  = models.DateTimeField(null=True, blank=True, default=datetime.now)
TempLog.objects.filter(user=user).update(end_date=datetime.now())

根据Willem Van Onsem的建议,我也改为PermanentLog.objects.bulk_create(new_object).

有用!谢谢威廉·范昂塞姆

标签: pythondjango

解决方案


解决方案:首先,我不只是import datetime,而是改为from datetime import datetime

其次,我没有使用auto_now=Trueand Now(),而是改为如下;

class TempLog(models.Model):
    user= models.ForeignKey(User, on_delete=models.CASCADE, null=True,)
    start_date  = models.DateTimeField(null=True, blank=True, default=datetime.now)
    end_date    = models.DateTimeField(null=True, blank=True)

    def save( self, *args, **kwargs ):
        user= self.user
        entry = TempLog.objects.filter(user=user)
        if entry.exists():
            TempLog.objects.filter(user=user).update(end_date=datetime.now())
            queryset = TempLog.objects.filter(user=user).values('start_date', 'end_date', 'user')
 
            new_objects = [PermanentLog(**values) for values in queryset]

            PermanentLog.objects.bulk_create(new_objects)

推荐阅读