【问题标题】:field of a model is disabled in admin panel模型的字段在管理面板中被禁用
【发布时间】:2020-02-22 23:19:09
【问题描述】:

我有一个模型,名称是文章,每篇文章都有一个标题。 我想通过管理员创建一篇新文章,但我遇到了只是标题字段突然被禁用并且我无法输入标题。我的文章模型如下:

class Article(models.Model):
    title=models.CharField(max_length=100)
    body=models.TextField()
    view=models.IntegerField(default=0)
    created_at=models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now = True)
    published_at = models.DateTimeField(default=timezone.now)
    show=models.BooleanField( default=1)
    def __str__(self):
        return self.title


    user = models.ForeignKey(User,on_delete=models.SET_NULL, null = True)

    categories = models.ManyToManyField(Category)

    class Meta:
        permissions=(
            ('private_section_article','Private Section Article'),
        )

和这个模型对应的admin文件是:

@admin.register(Article)
class ArticleAdmin(ModelAdminJalaliMixin,admin.ModelAdmin):
    def published_fa(self,model):
        return datetime2jalali(model.published_at).strftime('%y/%m/%d _ %H:%M:%S')
    list_display=('title','view','published_fa','created_at','updated_at','show')
    list_display_links=('published_fa',)
    search_fields = ['title','body','created_at']
    list_filter=('published_at','title')
    date_hierarchy='updated_at'
    ordering=['-created_at']
    readonly_fields = ('title',)
    actions=['make_hide','make_show']
    fieldsets = (
        (None, {
            "fields": (
                'title','categories','body','published_at'
            ),
        }),
        ('Advanced Options',{
            'classes':('wide', 'extrapretty','collapse'),
            'fields':('view','show','user')
        })
    )

    def make_hide(self,request,queryset):
        row_updated = queryset.update(show=0)
        message='1 article was'
        if row_updated is not 1:
            message="%s articles were" % row_updated

        self.message_user(request,"%s marked as hide" % message)# to show a message after this action have done

    make_hide.short_description='make selected articles as hide'

    def make_show(self , request , queryset):
        row_updated = queryset.update(show = 1)
        message='1 article was'
        if row_updated is not 1:
            message="%s articles were" % row_updated
        self.message_user(request,"%s marked as show" % message)# to show a message after this action have done

    make_show.short_description = "Make selected articles as show"

现在,当我选择之前创建的一篇文章时,管理面板没有给我输入来更改它,当我想创建一篇新文章时,我不能只为标题字段输入任何内容,因为没有输入或 textFiled 之类的东西。 帮助我知道为什么会这样。

这是来自管理面板的屏幕截图,它只禁用了标题字段 the screenshot of admin page to edit a title

【问题讨论】:

    标签: django python-3.x django-models django-templates


    【解决方案1】:

    因为您的帐户中有readonly_fields = ('title',)

     @admin.register(Article)
    class ArticleAdmin(ModelAdminJalaliMixin,admin.ModelAdmin):
        def published_fa(self,model):
            return datetime2jalali(model.published_at).strftime('%y/%m/%d _ %H:%M:%S')
        list_display=('title','view','published_fa','created_at','updated_at','show')
        list_display_links=('published_fa',)
        search_fields = ['title','body','created_at']
        list_filter=('published_at','title')
        date_hierarchy='updated_at'
        ordering=['-created_at']
        **readonly_fields = ('title',)**
        actions=['make_hide','make_show']
        fieldsets = (
            (None, {
                "fields": (
                    'title','categories','body','published_at'
                ),
            }),
            ('Advanced Options',{
                'classes':('wide', 'extrapretty','collapse'),
                'fields':('view','show','user')
            })
        )
    

    如果你删除了问题就解决了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 2018-12-09
      • 2013-03-07
      • 2018-07-03
      • 2020-09-30
      相关资源
      最近更新 更多