3
DECOM_CHOICES = (
    ('N', 'No'),
    ('Y', 'Yes'),
)

class Host(models.Model):
    hostname = models.CharField(max_length=36, unique=True)
    decommissioned = models.CharField(max_length=1, choices=DECOM_CHOICES, default='N')
    ip_address = models.IPAddressField()
    def __unicode__(self):
        return self.hostname

class HostAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Host Info', {'fields': ['hostname','decommissioned','ip_address']}),
    list_display = ('hostname', 'ip_address', 'decommissioned')
    list_filter = ('decommissioned')

廃止されたフィルターを'N'デフォルトで代わりに設定できるようにする方法はあり'All'ますか?

4

3 に答える 3

0

if('HTTP_REFERER' in request.META)and(request.META ['HTTP_REFERER']。find('?')== -1)and(not request.GET.has_key('status__exact')):

上記の「gerdemb」で指定されたソリューションの代わりにこの保存条件を使用して、すべてを選択できるようにします。

于 2009-05-15T05:45:52.290 に答える
0

デフォルトのフィルター値を設定するための回避策がコメントに記載されているDjango ticketのコードをほぼそのまま使用しているようです。現在、これを行うための特にエレガントな方法はありません。

余談ですが、はいまたはいいえを保存しているので、ブールフィールドを使用したほうがよいのではないでしょうか?

于 2009-05-13T09:02:59.277 に答える
0

に渡す前に、リクエスト オブジェクト内の GET データを変更してこれを行いますchangelist_view()。エレガントではありませんが、機能します。

class MyModelAdmin(admin.ModelAdmin):    
    def changelist_view(self, request, extra_context=None):
        if not request.GET.has_key('decommissioned__exact'):
            q = request.GET.copy()
            q['decommissioned__exact'] = 'N'
            request.GET = q
            request.META['QUERY_STRING'] = request.GET.urlencode()
        return super(MyModelAdmin,self).changelist_view(request, extra_context=extra_context)

注:ここではこの正確なコードを試していませんが、アイデアは得られるはずです。

于 2009-05-13T14:21:34.357 に答える