#django #django-models #django-admin
Вопрос:
Поля не отображаются в администраторе django При попытке добавить роль через администратора django поле не отображается
class Role(Core):
role = models.CharField(max_length=25, unique=True, editable=False)
def save(self, *args, **kwargs):
self.role = self.role.lower()
super(Role, self).save(*args, **kwargs)
def __str__(self):
return self.role.capitalize()
admin.site.register(Role)
class Core(models.Model):
id = models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
Комментарии:
1.Вы должны определить,
Core
прежде чемRole
.2. кроме
id
того, он задается базой данных (это первичный ключ),created_at
аupdated_at
элементы и не подлежат редактированию, поэтому они также не будут отображаться в форме.3. Все ваши поля есть
editable=False
, так что, как сказано выше, ни одно из них не появится…
Ответ №1:
Значение id
задается базой данных (это первичный ключ), created_at
а updated_at
элементы и не подлежат редактированию, поэтому они также не будут отображаться в форме.
Таким образом, это означает, что role
это будет единственное поле, которое можно использовать, но вы указали его как editable=False
[Django-doc], поэтому оно не будет отображаться для создания/редактирования Role
объекта.
Вы должны удалить editable=False
деталь:
class Role(Core):
# no editable = False ↓
role = models.CharField(max_length=25, unique=True)
def save(self, *args, **kwargs):
self.role = self.role.lower()
super(Role, self).save(*args, **kwargs)
def __str__(self):
return self.role.capitalize()