[英]django.core.exceptions.ValidationError: [“'_auth_user_id' value must be an integer.”] error on Django
[英]"django.core.exceptions.ValidationError" error
我正在 Django 中编写一个简单的游戏,一切正常,但突然......,我遇到了以下错误:
我不知道这些代码有什么问题:
(test)alireza@alireza:~/test/test1$ python manage.py syncdb
Operations to perform:
Synchronize unmigrated apps: django_admin_bootstrapped, django_admin_bootstrapped_bootstrap3, crispy_forms
Apply all migrations: contenttypes, admin, auth, arosis, sessions
Synchronizing apps without migrations:
Creating tables...
Installing custom SQL...
Installing indexes...
Running migrations:
Applying arosis.0008_auto_20150212_0826...Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/alireza/test/lib/python3.4/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
utility.execute()
File "/home/alireza/test/lib/python3.4/site-
...
...
...
return self.to_python(value)
File "/home/alireza/test/lib/python3.4/site-packages/django/db/models/fields/__init__.py", line 1252, in to_python
params={'value': value},
django.core.exceptions.ValidationError: ["'' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format."]
class Move(models.Model):
"""docstring for Move"""
x = models.IntegerField()
y = models.IntegerField()
comment = models.CharField(max_length=30)
game = models.ForeignKey(Game)
by_first_player = models.BooleanField(default=True)
timestamp = models.DateTimeField(auto_now_add=True)
def __str__(self):
return "{}".format(self.comment)
class Meta:
get_latest_by = 'timestamp'
def player(self):
return self.game.first_player if self.by_first_player else self.game.second_player
我给了auto_now_add=True
,
但起初,当我运行时:
python manage.py makemigrations
它要求我输入DateTimeField()
的默认值
我应该怎么办?
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('arosis', '0007_auto_20150211_1844'),
]
operations = [
migrations.AlterModelOptions(
name='move',
options={'get_latest_by': 'timestamp'},
),
migrations.AddField(
model_name='move',
name='by_first_player',
field=models.BooleanField(default=True),
preserve_default=True,
),
migrations.AddField(
model_name='move',
name='timestamp',
field=models.DateTimeField(default='', auto_now_add=True),
preserve_default=True,
),
]
我有类似的事情。 从文件夹/ migrations中删除所有迁移,然后运行python manage.py makemigrations,然后运行python manage.py migration。 这对我有用。
据我了解,您已经有一个数据库,其中已经包含一些“ Move”条目。
如果您在已经有数据的表中添加一列,则需要为该列提供默认值,该迁移将设置为涉及表的数据库中所有现有条目(否则此类条目将为无效,除非我没有记错,除非将null = True指定为kwarg)
此外,您可能需要(在我所有时间),在settings.py中根据您的语言环境和用来键入日期的方式在DATE_INPUT_FORMATS和DATETIME_INPUT_FORMATS变量中进行设置。 (请参阅https://docs.djangoproject.com/zh-CN/1.7/ref/settings/#date-input-formats )
一个示例(在意大利,我们采用DD / MM / YYYY格式):
DATE_INPUT_FORMATS = ( "%d/%m/%Y", )
DATETIME_INPUT_FORMATS = ( "%d/%m/%Y %H:%M", )
您的Django配置期望使用以下格式:
YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]
(方括号内的内容是可选的)
编辑:auto_now_add kw arg告知添加(而不是更新)条目时,字段值应设置为“ now”。
它要求我输入DateTimeField()的默认值
这样做是因为您没有指定默认值,并且该字段不是可选的。 由于其具有破坏性的更改,因此您必须提供默认值。
您可能只是按Enter键,因此是一个例外,因为空白字符串不是DateTimeField
的有效条目。
解决的办法是再次运行迁移,这次提供有效的日期和时间字符串。 将用于数据库中所有现有行; 有效格式的示例是2015-02-12 00:00
另外,如果您不怕手脏了,可以查看该文件夹中的迁移文件并找到特定的无效字段,这对我来说很有效。 删除所有迁移为我带来了一些错误。
解决方案(如果您使用的是 Visual Studio Code 并且不想从migrations
文件夹中删除所有文件):
按ctr+shift+f
键入被视为无效的短语。
例如:
django.core.exceptions.ValidationError: ['“09.09.2022” value has an invalid date format. It must be in YYYY-MM-DD format.']
所以输入09.09.2022
确保您正在查看所有文件!
在“搜索”字段下方,在“替换”字段中放置适当的日期: 2022.09.09
瞧
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.