我每次看到它时都会默认过滤数据库(当我保存更改或第一次打开数据库时)。 谁能告诉我怎么做?
答案 0 :(得分:4)
使用自定义custom Managers:
可以实现这一点假设您有一个名为Book
的课程:
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=50)
并且您希望书籍对象的管理页面仅显示Roald Dahl的书籍,然后您可以添加自定义管理器:
class DahlBookManager(models.Manager):
def get_query_set(self):
return super(DahlBookManager, self).get_query_set().filter(author='Roald Dahl')
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=50)
objects = models.Manager()
dahl_objects = DahlBookManager()
然后,您只需指定您的ModelAdmin
应使用dahl_objects
经理,其解释为here。
答案 1 :(得分:0)
这是我的models.py:
from django.db import models
class DahlBookManager(models.Manager):
def get_query_set(self):
return super(DahlBookManager, self).get_query_set().filter(processed=False)
class Book(models.Model):
book_name = models.CharField('book',max_length=1000,null=True, blank=True)
url = models.CharField(max_length=1000,null=True, blank=True)
processed = models.BooleanField('Done',)
def __str__(self):
return u'%s' % (self.book_name)
def url1(self):
return '<a href="%s">%s</a>' % (self._url, self.url)
site_url1.allow_tags = True
class Admin:
pass
class Meta:
db_table = 'books'
objects = models.Manager()
dahl_objects = DahlBookManager()
这是我的admin.py:
from django.contrib import admin
from mybooks.booksdb.models import Book
from django import forms
admin.autodiscover()
class BookAdmin(admin.ModelAdmin):
def queryset(self,request):
qs=self.model.objects.get_query_set()
ordering = self.ordering or ()
if ordering:
qs=qs.order_by(*ordering)
return qs
....
默认情况下没有过滤器。我的小姐在哪里?