поле модели отключено в админке - PullRequest
1 голос
/ 27 октября 2019

У меня есть модель с именем article, а у каждой статьи есть название. Я хочу создать новую статью через администратора, но я столкнулся с тем, что только поле заголовка внезапно отключено, и я не могу ввести заголовок. моя модель статьи такова:

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.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 или что-то подобное. помогите мне узнать, почему это так.

это скриншот из панели администратора, который отключает только поле заголовка снимок экрана страницы администратора для редактирования заголовка

1 Ответ

0 голосов
/ 27 октября 2019

Потому что у вас есть 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')
        })
    )

Если вы удалите, проблема будет решена

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...