如何识别代理模型实例?

时间:2012-12-11 10:55:20

标签: django proxy

我需要创建几种具有不同权限的用户。

我正在尝试使用代理,但我不确定如何识别生成的实例。我知道使用代理模型在数据库的同一个表中,但我需要能够识别它们。例如,在管理员的MyUser列表中,我拥有从UserMyUser模型创建的所有实例,并且我希望只有MyUser个实例。

我想我应该覆盖queryset admin中的MyUser方法,但我不确定识别MyUser个实例的最佳方式是什么,或者即使它是正确的方式有几个具有不同权限的用户模型。

有人可以帮忙吗?

models.py

from django.db import models
from django.contrib.auth.models import User

class MyUser(User):
    class Meta:
        proxy = True

admin.py

class MyUserAdmin(admin.ModelAdmin):
    pass
admin.site.register(MyUser, MyUserAdmin)

1 个答案:

答案 0 :(得分:0)

我创建了一个组myusers,并在创建MyUser对象时将其添加到实例中,以便我可以在MyAdminUser queryset中过滤掉它们:

class MyUser(User):
    class Meta:
        proxy = True

    def save(self, *args, **kwargs):
        super(MyUser, self).save(*args, **kwargs)
        self.groups.add(Group.objects.get(name='myusers'))