【问题标题】:I can not get into posts in django admin我无法进入 django admin 中的帖子
【发布时间】:2021-05-27 07:12:39
【问题描述】:

单击 django admin 中的帖子后,此消息会弹出 ValueError at /admin/blog/post/ 基数为 10 的 int() 的无效文字:b'27th June' 是的,我在 DateField 中输入了错误的数据形式。我想删除这些数据。这就是为什么我试图进入 django admin 中的帖子。有没有办法解决这个问题?

models.py
class Post(models.Model):   

    flight_date = models.DateField(blank=False)

我去了 django shell 并输入了这段代码,但得到了这个错误;

>>> from django.db import connection
>>> with connection.cursor() as cursor:
... cursor.execute("UPDATE blog_post SET flight_date='2021-05-27' WHERE flight_date='27th June'")
  File "<console>", line 2
    cursor.execute("UPDATE blog_post SET flight_date='2021-05-27' WHERE flight_date='27th June'")
    ^
IndentationError: expected an indented block

我不知道这段代码有什么问题

【问题讨论】:

  • 您使用的是 SQLite(这只能在 SQLite 中实现)?您必须通过编写 SQL 手动删除它,就像您尝试使用 python 查询一样,您总是会收到错误。

标签: python django django-models django-admin


【解决方案1】:

问题在于,在 SQLite 中,日期只是简单地存储为字符串,因此您可以存储任何无效日期,只要它是列中的字符串即可。但是使用的游标会尝试将此日期转换为字符串,并且在此级别您将收到错误消息。因此,您无法解决使用 ORM 来解决此问题,必须使用 SQL 查询来解决此问题。

如果您不知道如何打开数据库外壳,您可以使用来自 Django 外壳 (python manage.py shell) 的原始查询,下面的 sn-p 假设您的应用名为 test_app,您需要替换使用您自己的应用名称:

from django.db import connection


with connection.cursor() as cursor:
    cursor.execute("UPDATE test_app_post SET flight_date='2021-05-27' WHERE flight_date='27th June'")

【讨论】:

  • 我按照您的指示进行操作,但收到上述错误消息
  • @PeterKam 你没有缩进cursor.execute(...)吗?...
  • 我以为它是自动完成的......无论如何我又做了一次,它完成了谢谢
  • @PeterKam 这是一个不同的问题,因此您应该为此发布一个不同的问题。
  • 非常感谢!我删除了 django shell 中的所有帖子,现在完全没有问题。我可以进入 django admin 中的“帖子”。再次感谢您!
【解决方案2】:

请通过此命令进入 Django shell

python manage.py shell

然后从模型文件中导入模型并触发更新查询

【讨论】:

  • 将不起作用,因为看起来 OP 已在 SQLite 表中手动添加了此条目。数据库后端/游标本身将尝试将字符串转换为日期并失败。虽然如果你是这个意思,原始查询可能会起作用。
  • 你能进入 django-shell 吗?
  • 你能告诉我更准确的吗?我听从了你的指示。我进入了贝壳。和 ```` from blog.models import Post ```` 我试图调用那个特定的对象,但我不知道该怎么做。所以我把 Post.obejects.all() ... 同样的错误信息出来了
  • Abdul Aziz Barkat>> 是的,我确实将这些数据放在网站上(本地服务器)。那我该如何解决呢?
  • Post.objects.count() 然后有 60 个。所以我尝试这样做 p = Post.objects.get(pk=60) 但出现了相同的错误消息。怎么可能删除这些数据??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-31
相关资源
最近更新 更多