2013-03-29 5 views
-2

에 저장되지 않으며, 나는 다음과 같은 문제로 실행하십시오 status_time이 제대로 저장되지 않는 이유내가 쉘을 입력하면 내 상태 개체가 장고

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 

내가 이해가 안 돼요. 내 상태 모델은 다음과 같습니다.

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

어떤 데이터베이스를 사용합니까? 과거의 datetimes를 지원합니까? –

+0

sqlite3을 사용하고 있습니다. datetime.datetime.min으로 멋지다는 것을 알 수 있습니다. – Abs

+0

Pavel,'timezone.datetime.min'을'timezone.datetime.now '로 대체하면 같은 문제가 발생할 수 있습니다.()'문제가되지 않습니다. Vken, 나는 그렇게 생각하지 않는다. 'status_time'을'time'으로 설정하고 싶습니다. – Abs

답변

1

앞서 말씀 드린대로 설명서를 읽고 지침서를 따라야합니다. 이것은 모델의 필드에 대한 기본값을 설정하는 방법이 아닙니다. https://docs.djangoproject.com/en/1.5/ 설명서 및 자습서를 살펴보십시오. 문제가 발생하는 경우 다시 돌아와 질문을하십시오.하지만 계속 잘못하면 나쁜 습관을 형성하는 것입니다.


나는 원본 콘텐츠가 의도적이지 않은 것으로 보일 수도 있음을 알고 있습니다. 나는 그들이 당신의 방식대로하는 것을 막기를 원합니다. 그들이 수행하도록 고안된 방식에 반대하고 그 과정에서 많은 시간을 낭비하고 있습니다. 즉, 내가 시도하고 장고의 디자이너가 당신이 당신의 모델을 설정하기를 원했을 가능성이 높다는 것을 보여줄 것이다.

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

당신이 볼 수있는 바와 같이, 모델을 만들 때 사용하는 더 __init__이 없습니다. 필드를 속성으로 지정하기 만하면됩니다.

클래스 상태 (models.Model을) :

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

추가됩니다 어떤 각 필드 유형은

+0

감사합니다 - 당신은 죽었습니다. 나는 으로 변경했다.'class Status (models.Model) : status = models.CharField (max_length = 200, default = '') status_time = models.DateTimeField ('date published', default = timezone.datetime.min) ' 그리고 효과가있었습니다. – Abs

+0

@Ngenator : http://bostonpython.com? –

+0

또한 @Abs는 내가 가려고하지 않을 때 약간 가혹한 것처럼 대답을 업데이트했습니다. – Ngenator

0

이유는 단순히 할 ... 디폴트 값, MAX_LENGTH 등 같은 것들을 설정하는 몇 가지 옵션이 있습니다 Status 인스턴스가 생성되면 날짜 시간 객체가 자동으로 생성됩니다. 추가 정보 here

+0

'timezone.datetime.min'으로 설정하려고합니다. 이것은'auto_now_add'와 같지 않습니다. – Ngenator

관련 문제