복붙노트

[PYTHON] DateTimeField가 관리 시스템에 표시되지 않습니다.

PYTHON

DateTimeField가 관리 시스템에 표시되지 않습니다.

어떻게 "날짜"필드가 관리자 시스템에 나타나지 않습니까?

내 admin.py 파일에서

from django.contrib import admin
from glasses.players.models import *
admin.site.register(Rating)

등급 모델에는 다음과 같은 "날짜"라는 필드가 있습니다.

date = models.DateTimeField(editable=True, auto_now_add=True)

그러나 편집 시스템이 True로 설정된 경우에도 관리 시스템에서는 필드가 표시되지 않습니다.

누구 아이디어가 있습니까?

해결법

  1. ==============================

    1.나는 reason을 auto_now_add 필드로 거짓이라고 믿는다.

    나는 reason을 auto_now_add 필드로 거짓이라고 믿는다.

    이 답변에서 :

    또한 문서에서 언급 :

    객체가 저장 될 때 현재 날짜로 덮어 쓰게 될 경우 편집 가능한 필드를 가질 이유가 없으므로 이는 의미가 있습니다.

  2. ==============================

    2.admin 패널에서 정말로 날짜를보고 싶다면 admin.py에 readonly_fields를 추가하면됩니다 :

    admin 패널에서 정말로 날짜를보고 싶다면 admin.py에 readonly_fields를 추가하면됩니다 :

    class RatingAdmin(admin.ModelAdmin):
        readonly_fields = ('date',)
    
    admin.site.register(Rating,RatingAdmin)
    

    지정한 필드는 편집 가능한 필드 다음에 마지막으로 추가됩니다. 순서를 제어하려면 필드 옵션을 사용할 수 있습니다.

    추가 정보는 Django 문서에서 얻을 수 있습니다.

  3. ==============================

    3.주요 해킹 :

    주요 해킹 :

    이 작업을 정말로 수행해야하는 경우 다음과 같이 해당 필드를 "편집 가능"으로 설정하여 즉시 주위를 해킹 할 수 있습니다.

    class Point(models.Model):
      mystamp=models.DateTimeField("When Created",auto_now_add=True)
      mystamp.editable=True
    

    이렇게하면 필드를 편집 할 수 있으므로 실제로 변경할 수 있습니다. 적어도 mysql 백킹 엔진으로는 잘 동작하는 것으로 보인다. 다른 배킹 스토어가이 데이터를 데이터베이스에 불변으로 만들 것이므로 편집을 시도 할 때 문제가 발생하므로주의해서 사용해야합니다.

  4. ==============================

    4.특정 요구 사항 및 행동 차이의 미묘한 차이에 따라 다음을 수행 할 수 있습니다.

    특정 요구 사항 및 행동 차이의 미묘한 차이에 따라 다음을 수행 할 수 있습니다.

    from django.utils.timezone import now
    
    class MyModel(models.Model):
        date = models.DateTimeField(default=now)
    

    기본 필드는 다음과 같이 사용할 수 있습니다. https://docs.djangoproject.com/en/dev/ref/models/fields/#default

    The default value for the field. This can be a value or a callable object. If callable it will be called every time a new object is created.
    

    이것은 편집 가능을 False로 설정하지 않습니다.

  5. ==============================

    5.auto_now_add가 true 인 것과 관련이있을 수 있습니다. 대신 add에 날짜를 캡처하는 매개 변수 대신 id가 null 인 경우 모델 저장 메서드를 재정 의하여 datetime을 삽입 할 수 있습니다.

    auto_now_add가 true 인 것과 관련이있을 수 있습니다. 대신 add에 날짜를 캡처하는 매개 변수 대신 id가 null 인 경우 모델 저장 메서드를 재정 의하여 datetime을 삽입 할 수 있습니다.

    class Rating(models.Model):
    
        ....
        def save(self, *args, **kwargs)
            if not self.id: 
                self.date = datetime.datetime.now()
    
  6. ==============================

    6.관리자가 입력 한 모델을 클릭했을 때 모든 항목의 목록에 필드가 표시되도록하고 해당 항목을 열 때가 아니라 -

    관리자가 입력 한 모델을 클릭했을 때 모든 항목의 목록에 필드가 표시되도록하고 해당 항목을 열 때가 아니라 -

    class RatingAdmin(admin.ModelAdmin):
        list_display = ('name', 'date') 
    
    admin.site.register(Rating, RatingAdmin)
    

    '이름'은 기본 입력란이나 관리자 패널에 표시하려는 다른 입력란입니다.

    이렇게하면보고 싶은 모든 열을 지정할 수 있습니다.

  7. ==============================

    7.당신은 할 수 없어, 문서를 확인

    당신은 할 수 없어, 문서를 확인

    auto_now 및 auto_now_add는 모두 편집 할 수없는 필드이므로 무시할 수 없습니다.

  8. from https://stackoverflow.com/questions/6386172/datetimefield-doesnt-show-in-admin-system by cc-by-sa and MIT license