Поля не отображаются в администраторе django

#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()