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)
그러나 관리 시스템 내에서는 editable
로 설정되어 있어도 필드가 표시되지 않습니다 True
.
누구든지 아이디어가 있습니까?
나는 이성이 auto_now_add
현장에 있다고 믿습니다 .
에서 이 대답 :
auto_now 속성이 설정된 모든 필드는 editable = False를 상속하므로 관리자 패널에 표시되지 않습니다.
또한 문서 에서 언급 :
현재 구현 된대로 auto_now 또는 auto_now_add를 True로 설정하면 필드에 editable = False 및 blank = True가 설정됩니다.
개체가 저장 될 때 현재 날짜 / 시간으로 덮어 쓸 경우 필드를 편집 할 수있는 이유가 없기 때문에 이는 의미가 있습니다.
관리자 패널에서 날짜를보고 싶다면 admin.py를 추가하면 readonly_fields
됩니다 .
class RatingAdmin(admin.ModelAdmin):
readonly_fields = ('date',)
admin.site.register(Rating,RatingAdmin)
지정하는 모든 필드는 편집 가능한 필드 뒤에 마지막으로 추가됩니다. 순서를 제어하려면 fields
옵션을 사용할 수 있습니다.
추가 정보는 Django 문서 에서 사용할 수 있습니다 .
주요 해킹 :
이 작업을 정말로 수행해야하는 경우 (내가하는 것처럼) 다음과 같이 필드를 "편집 가능"하도록 필드를 즉시 설정하여 언제든지 해킹 할 수 있습니다.
class Point(models.Model):
mystamp=models.DateTimeField("When Created",auto_now_add=True)
mystamp.editable=True
이렇게하면 필드를 편집 할 수 있으므로 실제로 변경할 수 있습니다. 적어도 mysql 백업 엔진에서는 잘 작동하는 것 같습니다. 다른 백업 저장소가이 데이터를 데이터베이스에서 변경 불가능하게 만들어 편집을 시도 할 때 문제를 일으키는 경우 certian에 대해 말할 수 없으므로 주의해서 사용하십시오 .
특정 요구 사항 및 동작 차이의 뉘앙스에 따라 다음을 수행 할 수 있습니다.
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
auto_now_add가 true 인 것과 관련이있을 수 있습니다. 추가시 날짜를 캡처하는 매개 변수 대신 모델 저장 메소드를 재정 의하여 id가 null 일 때 datetime을 삽입 할 수 있습니다.
class Rating(models.Model):
....
def save(self, *args, **kwargs)
if not self.id:
self.date = datetime.datetime.now()
특정 항목을 열 때가 아니라 모든 항목 목록 (관리자에서 모델을 클릭 할 때)에 필드를 표시하려면 다음을 수행하십시오.
class RatingAdmin(admin.ModelAdmin):
list_display = ('name', 'date')
admin.site.register(Rating, RatingAdmin)
'이름'은 기본 필드 또는 관리자 패널에 표시하려는 기타 필드입니다.
이렇게하면보고자하는 모든 열을 지정할 수 있습니다.
그렇게 할 수 없습니다. 문서를 확인하십시오.
auto_now 및 auto_now_add 는 모두 편집 할 수없는 필드이며 재정의 할 수 없습니다.
참고 URL : https://stackoverflow.com/questions/6386172/datetimefield-doesnt-show-in-admin-system
'developer tip' 카테고리의 다른 글
UIImagePickerController에서 여러 이미지를 선택하는 방법 (0) | 2020.10.20 |
---|---|
Django : 'current_tags'는 유효한 태그 라이브러리가 아닙니다. (0) | 2020.10.20 |
포인터에 대한 포인터 대 일반 포인터 (0) | 2020.10.20 |
유효한 연도를 테스트하기위한 정규식 일치 (0) | 2020.10.20 |
Angular2 * ngIf는 템플릿에서 객체 배열 길이를 확인합니다. (0) | 2020.10.20 |