gpt4 book ai didi

python - Django IntegrityError 与 DateTimeField

转载 作者:行者123 更新时间:2023-11-29 13:21:49 24 4
gpt4 key购买 nike

我的模型中有如下字段。

    view_time = ArrayField(
models.DateTimeField(auto_now_add=True))

但我得到错误:

django.db.utils.IntegrityError: null value in column "view_time"violates not-null constraint
DETAIL: Failing row contains (18, 0, null, null, null).

当我尝试创建新对象并添加值时出现错误:

    recent_views = UserRecentViews.objects.create()
recent_views.add_view(product.article)

我使用 Django 1.8.8 和 Python 3.5.2

我重置了数据库 fiew 次,但没有用,数据库是 Postgres。

我认为对象创建有问题?但为什么 Django 不能用当前日期时间创建对象? auto_now_add=为此添加了 True。

我的问题是如何使用 Django 添加自动生成的日期时间字段?

最佳答案

首先,您的数据库似乎未完全规范化。在列或数组类型中使用逗号分隔值通常是一个很好的指示。

其次。

Tip: Arrays are not sets; searching for specific array elements can be a sign of database misdesign. Consider using a separate table with a row for each item that would be an array element. This will be easier to search, and is likely to scale better for a large number of elements.

Arrays只是 postgresql 给你足够的绳索的方式......

您最好的选择确实是规范化您的数据库。您的劣势选项是设置 blank=True, null = True

view_time = ArrayField(
models.DateTimeField(auto_now_add=True), blank=True, null=True)

那是因为当您执行以下操作时,django 根本没有理由创建任何 DateTimeField 对象。

recent_views = UserRecentViews.objects.create()

所以它只是将数组字段设置为空,这是不允许的。

哦,更具体一点

but why django can not create object with current datetime

因为你没有告诉它。

关于python - Django IntegrityError 与 DateTimeField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40407634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com