-2

当我进入shell时,我遇到了以下问题:

from users.models import Status
from django.utils import timezone

Status.objects.all()
>>> []
p = Status()
p.status_time = timezone.datetime.min
p.status_time
>>> datetime.datetime(1, 1, 1, 0, 0)
p.save()
Status.objects.all()
>>> [<Status: Status object>]
print(Status.objects.all()[0].status_time)
>>> None

我不明白为什么status_time没有正确保存。我的状态模型如下:

class Status(models.Model):

    status = models.CharField(max_length=200)
    status_time = models.DateTimeField('date published')

    def __init__(self, status = '', time=timezone.datetime.min, *args, **kwargs):
        self.status = status
        self.status_time = time
        super(Status, self).__init__(*args, **kwargs)

有人可以解释这种行为并可能提出修复建议吗?

4

2 回答 2

1

我之前告诉过你,你需要阅读文档并按照教程进行操作。这不是为模型字段设置默认值的方法。请浏览https://docs.djangoproject.com/en/1.5/上的文档和教程。如果您在此过程中遇到问题,请返回并提出问题,但如果您继续错误地处理问题,您只是在养成坏习惯。


我意识到原始内容可能看起来很激进,这不是意图。我只是想阻止你按照自己的方式做事,而不是按照设计的方式做事,并在这个过程中浪费你大量的时间(我以前做过)。话虽如此,我将尝试演示 django 的设计者很可能希望您如何设置模型。

class Status(models.Model):
    status = models.CharField(max_length=200, null=True, blank=True)
    time = models.DateTimeField('date published', default=timezone.datetime.min)

如您所见,__init__创建模型时没有使用。您只需将字段作为属性即可。每种字段类型都有几个选项来设置默认值、max_length 等内容...

于 2013-03-29T23:00:21.937 回答
0

为什么不简单地做:

类状态(模型。模型):

status = models.CharField(max_length=200)
status_time = models.DateTimeField(auto_now_add=True)

Status创建实例后,它将自动添加日期时间对象。更多信息在这里

于 2013-03-30T10:50:59.503 回答