Din*_*jar 0 python django postgresql pycharm
我是 Django 的新手,我正在创建我的第一个项目。我创建了一个应用程序,在该应用程序中我定义了一个 postgres 数据时间字段,但是在运行 migrate 命令时我总是收到此字段的错误。
我在models.py中为datetime字段使用了以下值,但什么也没发生
created=models.DateTimeField(default=timezone.now)
created=models.DateTimeField(default='', blank=True, null=True)
created=models.DateTimeField(blank=True, null=True)
created=models.DateTimeField(default='0000-00-00 00:00:00', blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
在我的 settings.py 中
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
Run Code Online (Sandbox Code Playgroud)
我的模型.py
from django.db import models
from django.utils import timezone
# from django.contrib.auth.models import User
# Create your models here.
class Operator(models.Model):
operator_code=models.CharField(unique=True, max_length=20)
operator_name=models.CharField(max_length=60)
operator_type=models.CharField(max_length=60)
short_code=models.CharField(max_length=60)
apiworld_code=models.CharField(max_length=20)
apiworld_operatortype=models.CharField(max_length=20)
active_api_id=models.IntegerField(default=1)
ospl_commission=models.DecimalField(default=0.00, max_digits=11, decimal_places=2)
apiworld_commission=models.DecimalField(default=0.00, max_digits=11, decimal_places=2)
image=models.CharField(max_length=100)
status=models.SmallIntegerField(default=1)
updated=models.DateTimeField(default=timezone.now)
created=models.DateTimeField(default=timezone.now)
def __str__(self):
return self.operator_code
Run Code Online (Sandbox Code Playgroud)
当我运行“python manage.py migrate”时出现以下错误如何删除它
'django.core.exceptions.ValidationError: ["'0000-00-00 00:00:00' 值具有正确的格式 (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) 但是这是一个无效的日期/时间。"]'
小智 5
要回答您的问题,Django 中 DateTimeField 的格式在默认设置中定义,如下所述:https : //docs.djangoproject.com/en/2.2/ref/settings/#datetime-input-formats
此时它默认为以下内容,但显然可能会因您使用的 Django 版本而异:
[
'%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30'
'%Y-%m-%d', # '2006-10-25'
'%m/%d/%Y %H:%M:%S', # '10/25/2006 14:30:59'
'%m/%d/%Y %H:%M:%S.%f', # '10/25/2006 14:30:59.000200'
'%m/%d/%Y %H:%M', # '10/25/2006 14:30'
'%m/%d/%Y', # '10/25/2006'
'%m/%d/%y %H:%M:%S', # '10/25/06 14:30:59'
'%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200'
'%m/%d/%y %H:%M', # '10/25/06 14:30'
'%m/%d/%y', # '10/25/06'
]
Run Code Online (Sandbox Code Playgroud)
但是,查看您的代码,我认为您想知道“在 Django 中创建默认 DateTime 值的正确方法是什么”的答案。
答案取决于您希望该默认值是什么。如果你想要价值,null那么这很容易。
myfield = models.DateTimeField(null=True, blank=True, default=None)
Run Code Online (Sandbox Code Playgroud)
如果您正在尝试创建created_at和updated_at字段,那么您需要分别使用 theauto_now_add和auto_nowkwargs,这将在创建和更新模型实例时自动填写字段。
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3896 次 |
| 最近记录: |