【问题标题】:why can't hide slug field in django admin?为什么不能在 django admin 中隐藏 slug 字段?
【发布时间】:2021-11-21 07:07:28
【问题描述】:

当我尝试在 django 管理表单中排除“slug”字段时,我得到了这个消息:“KeyError at /admin/post/post/add/ “在‘​​PostForm’中找不到键‘slug’。选项有:作者、内容、图片、标题。” 为什么? django代码: 型号:models.py

from django.db import models
from django.utils import timezone
from django.urls import reverse

# Create your models here.
class Post(models.Model):
    title= models.CharField(max_length=50,null=False,blank=False)
    content= models.TextField(max_length=2000,null=False,blank=False)
    image= models.ImageField( upload_to="post-img/")
    created_at=models.DateTimeField(default=timezone.now)
    author=models.CharField(max_length=50,null=True,blank=True)
    slug=models.SlugField(max_length=30)
    

    

    class Meta:
        verbose_name =("Post")
        verbose_name_plural =("Posts")

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse("PostDetail", kwargs={'slug': self.slug})

    def headline(self):
        return self.content[:50]+'...'

admin.py

from django.contrib import admin
from .models import Post

# Register your models here.


class PostAdmin(admin.ModelAdmin):
    exclude=('created_at','slug',)
    # fieldsets=(({'fields':('title','content','image',)}),)
    
    list_display=['title','headline','author','created_at']
    prepopulated_fields = {'slug': ('title',)}

    
admin.site.register(Post,PostAdmin)

谢谢!

【问题讨论】:

  • 看起来您已经对模型进行了一些更改而没有进行一些迁移。 ./manage.py makemigrations./manage.py migrate。再试一次

标签: python django django-admin


【解决方案1】:

您已选择将其从管理员中排除。但是数据库要求它有一个值。

您需要在字段中添加null=Trueblank=True

slug=models.SlugField(max_length=30, blank=True,  null=True)

注意:确保makemigrationsmigrate 生效

Django Docs: ModelAdmin options

【讨论】:

    【解决方案2】:
    slug=models.SlugField(max_length=30, blank=True, editable=False)
    

    注意:

    不要在 CharField 上设置nullblank 就足够了。

    您可以在后台添加slug fieldreadonly_fields

    【讨论】:

      猜你喜欢
      • 2014-05-03
      • 2011-02-10
      • 2016-05-31
      • 2011-10-08
      • 2018-02-17
      • 2012-05-07
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      相关资源
      最近更新 更多