管理员数据库中未显示“自动字段”列

时间:2019-05-26 06:14:53

标签: django django-models

我创建了一个模型Post

class Post(models.Model):
  id = models.AutoField(primary_key=True)
  title = models.CharField(max_length=100)
  image = models.ImageField(upload_to='blog_image', default='default.jpg')
  smallContent = models.TextField()
  content = models.TextField()
  data_posted = models.DateTimeField(default=timezone.now)
  author = models.ForeignKey(User, on_delete=models.CASCADE)

  def __str__(self):
     return self.title

,但ID字段未显示在管理面板中。我进行过迁移和迁移,并且都成功完成了。 image of admin panel

2 个答案:

答案 0 :(得分:0)

由于这是一个只读字段,我认为您可能需要明确告诉admin才能显示它。

我不知道这是否行得通,但请尝试admin.py

from django.contrib import admin
from .models import Post

class PostAdmin(admin.ModelAdmin):
    readonly_fields = ['display_id']

    def display_id(self, obj):
        return obj.id

admin.site.register(Post, PostAdmin)

答案 1 :(得分:0)

保存模型后将生成AutoField。管理控制台中未提供该密码,因为该密码不可编辑。

如果要使id可编辑(不推荐),请使用primary_key = True将其覆盖为CharField而不是AutoField。

否则,如果只想在面板中显示它(在编辑保存的模型时),请将其添加到模型管理员的只读列表中。

在这里了解AutoField