1

Practical Django Project に従ってブログを書いています。ただし、変更リストには、ステータスが LIVE のエントリのみが表示されます。ステータスが DRAFT および HIDDEN の他のエントリはデータベースに保存されますが、変更リストには表示されません。誰でも私を助けることができますか?ありがとうございました。

流れるのはmodel.py

class LiveManager(models.Manager):
    def get_query_set(self):
    return super(LiveManager,self).get_query_set().filter(status=self.model.LIVE_STATUS)

class Post(models.Model):

    LIVE_STATUS=1
    DRAFT_STATUS=2
    HIDDEN_STATUS=3
    STATUS_CHOICES=(
    (LIVE_STATUS,'Live'),
    (DRAFT_STATUS,'Draft'),
    (HIDDEN_STATUS,'Hidden')
    )

    status=models.IntegerField(choices=STATUS_CHOICES)
    category=models.ManyToManyField(Category)
    title=models.CharField(max_length=100)
    slug=models.SlugField(max_length=100)
    content_markdown=models.TextField(blank=True)
    content_markup=models.TextField(blank=True)
    pub_date=models.DateTimeField()
    live=LiveManager()
    objects=models.Manager()


    def save(self):
        self.content_markup=markdown(self.content_markdown,['codehilite'])
        super(Post,self).save()

    def __unicode__(self):
        return '%s'%(self.title)

これがadmin.pyです

class PostAdmin(admin.ModelAdmin):
    exclude=['content_markup']
    prepopulated_fields={'slug':('title',)}
    list_display=['title','status']

class CategoryAdmin(admin.ModelAdmin):
    prepopulated_fields={'slug':('title',)}

admin.site.register(Category,CategoryAdmin)
admin.site.register(Post,PostAdmin)
4

2 に答える 2

6

ドキュメントによると:

"... Django が遭遇する最初のマネージャー (モデルで定義されている順序で) は、特別なステータスを持ちます。Django は、クラスで定義された最初のマネージャーを「デフォルトの」マネージャーとして解釈します"

だから、必ずobjects=models.Manager()前に来るようにしてくださいlive=LiveManager()

于 2013-10-29T12:13:27.963 に答える