Programming

Django 모델 양식 객체의 자동 생성 날짜?

procodes 2020. 7. 12. 10:38
반응형

Django 모델 양식 객체의 자동 생성 날짜?


객체의 생성 날짜를 자동으로 설정하는 가장 좋은 방법과 객체가 마지막으로 업데이트 된시기를 기록하는 필드는 무엇입니까?

models.py :

created_at = models.DateTimeField(False, True, editable=False)
updated_at = models.DateTimeField(True, True, editable=False)

views.py :

if request.method == 'POST':
    form = MyForm(request.POST)
    if form.is_valid():
        obj = form.save(commit=False)
        obj.user = request.user
        obj.save()
        return HttpResponseRedirect('obj_list')

오류가 발생합니다.

objects_object.created_at may not be NULL

이 값을 직접 설정해야합니까? 나는 그것이 전달 된 매개 변수의 요점이라고 생각했습니다 DateTimeField(또는 기본값 일뿐입니다. 설정 editable=False했으므로 양식에 표시되지 않으므로 요청에 제출되지 않으므로 얻을 수 없습니다 양식에 넣습니까?).

가장 좋은 방법은 무엇입니까? __init__방법은?


및에 각각 auto_nowauto_now_add옵션을 사용할 수 있습니다 .updated_atcreated_at

class MyModel(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

위의 대답은 맞습니다. auto_now_addauto_now 는 그렇게하지만 추상 클래스를 만들고 필요한 필드 created_at모든 모델에서 사용하는 것이 좋습니다 updated_at.

class TimeStamp(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True

이제 어디서나 사용하고 싶은 간단한 상속을 수행 할 수 있으며 원하는 모든 모델에서 타임 스탬프를 사용할 수 있습니다.

class Posts(TimeStampMixin):
    name = models.CharField(max_length=50)
    ...
    ...

이런 방식으로 Django DRY에서 객체 지향 재사용 성을 활용할 수 있습니다 (반복하지 마십시오)

참고 URL : https://stackoverflow.com/questions/3429878/automatic-creation-date-for-django-model-form-objects

반응형