简体   繁体   English

在django admin中使用代理模型来自定义更改列表视图

[英]Using proxy model in django admin to customize change list view

I have a model which looks like this : 我有一个看起来像这样的模型:

class Change(models.Model):
    Reference = models.CharField(max_length=100)
    Choices = ((1,"Pending"),(2,"In Progress",),(3,"Closed"))
    Status = models.SmallIntegerField(choices=Choices, default=1, max_length=1)

Since it is not possible to register another Change model,I am using a proxy model called ClosedChange as follows : 由于无法注册其他变更模型,因此我正在使用一种称为ClosedChange的代理模型,如下所示:

class ClosedChange(Change):
    class Meta:
        proxy = True
        verbose_name = u"Closed Changes"

What i want to achieve is that whenever any user changes the status of a change to Closed ,it should disappear from the change list view of Change and appear in the change list view of ClosedChange and vice versa. 我想要实现的是,每当有用户更改了改变封闭的状态,应该从改变的改变列表视图中消失,并出现在ClosedChange,反之亦然的改变列表视图。 How do i achieve this ?? 我该如何实现?

You can specify the queryset in the model admin: 您可以在模型admin中指定queryset:

class ChangeAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        return Change.objects.exclude(status='closed')

class ClosedChangeAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        return ClosedChange.objects.filter(status='closed')

admin.site.register(Change, ChangeAdmin)
admin.site.register(ClosedChange, ClosedChangeAdmin)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM