当我进入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)
有人可以解释一下这种行为并可能建议修复吗?
答案 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