Новые атрибуты не отображаются в панели администратора django
Раньше я использовал свой проект с sqlite. Затем начал новый проект, скопировал данные из предыдущего проекта и сделал некоторые изменения, и теперь использую его с mysql.
Вот мой models.py (не полный)
from django.db import models
from django.db.models import CheckConstraint, Q, F
class College(models.Model):
CITY_CHOICES=[('BAN','Bangalore')]
id=models.IntegerField(primary_key=True)
name=models.CharField(max_length=50)
city=models.CharField(choices=CITY_CHOICES,default='BAN',max_length=10)
fest_nos=models.IntegerField()
image=models.ImageField(default='default.jpg',upload_to='college_pics')
class Meta():
db_table='college'
def __str__(self):
return self.name
class Organizer(models.Model):
id=models.IntegerField(primary_key=True)
name=models.CharField(max_length=25)
phone=models.IntegerField()
def __str__(self):
return self.name
class Fest(models.Model):
FEST_CHOICES=[
('CUL','Cultural'),
('TEC','Technical'),
('COL','College'),
('SPO','Sports'),
]
id=models.IntegerField(primary_key=True)
name=models.CharField(max_length=50)
clg_id=models.ForeignKey(College,on_delete=models.CASCADE)
fest_type=models.CharField(choices=FEST_CHOICES,default='COL',max_length=10)
fest_desc=models.TextField(default='This is a fest')
#below two field are not showing up in admin page
start_date=models.DateField(auto_now_add=True)
end_date=models.DateField(auto_now_add=True)
event_nos=models.IntegerField()
org_id=models.ManyToManyField(Organizer)
image=models.ImageField(default='default.jpg',upload_to='fest_pics')
class Meta:
constraints = [
CheckConstraint(
check = Q(end_date__gte=F('start_date')),
name = 'check_start_date',
)
]
db_table='fest'
def __str__(self):
return self.name
Атрибуты start_date и end_date - это новые атрибуты, добавленные в этом проекте. В старом проекте их не было. Мой файл admin.py
from django.contrib import admin
from .models import College, Event, Fest, Organizer, Participated
admin.site.register(College)
admin.site.register(Organizer)
admin.site.register(Fest)
admin.site.register(Event)
admin.site.register(Participated)
Но в моей панели администратора, при добавлении новых фестивалей, у меня нет возможности добавить дату начала и окончания.
Я снова сделал миграции, фальшивые миграции и т.д. Что делать? Является ли проверка ограничений в model fest причиной этой проблемы?
Эти поля не будут отображаться в Django Admin, потому что они имеют auto_now_add=True, поэтому пользователь не должен их трогать.
Вы можете заставить поле auto_now_add отображаться в админке, используя readonly_fields в классе админки (это только показывает данные, вы все равно не можете редактировать его, потому что это auto_now_add)
#register with a class to use
class FestAdmin(admin.ModelAdmin):
readonly_fields = ('start_date', 'end_date')
admin.site.register(Fest, FestAdmin)