我的Status对象没有保存在Django中

时间:2013-03-29 22:46:41

标签: python django django-models python-2.7

当我进入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)

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

2 个答案:

答案 0 :(得分: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等...

答案 1 :(得分:0)

为什么不简单地做:

类Status(models.Model):

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

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