我正在尝试为django admin创建分离的用户,它具有有限的权限而不是常规管理员。我知道最好的方法是使用代理管理员,但我遇到了一些问题。
我有模型结构,不太可能改变。每个模型都继承自一些抽象的基础模型类。我无法添加proxy=True
条款。模型的结构或多或少看起来像这样:
class AbstractObject(models.Model):
@property
def some_property_that_applies_to_each_child_model(self):
pass
class Meta():
abstract = True
class ModelOne(AbstractObject):
id_field = models.IntegerField(primary_key=True)
@property
def some_custom_property(self):
pass
class ModelTwo(AbstractObject):
id_field = models.IntegerField(primary_key=True)
@property
def some_other_custom_property(self):
pass
现在我想创建一个限制管理员帐户,只能执行一些不处理db的操作。我知道我需要在每个模型的proxy=True
定义中添加class Meta
,但它不起作用......我得到的错误raise typeerror(proxy model %s has no non-abstract model base class. % name)
非常明显。我应该创建某种非抽象模型基类模型类并将其添加到数据库表吗?
我希望你能理解我遇到过的事情
答案 0 :(得分:0)
你应该这样做,如documentation中所述:
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
class MyPerson(Person):
class Meta:
proxy = True
def do_something(self):
# ...
pass
答案 1 :(得分:0)
您无法创建抽象类的代理模型。您的代理模型需要从非抽象模型继承。尝试以这种方式使用代理:
class AbstractBaseModel(models.Model):
#some code
class Meta():
abstract = True
class MyModel(AbstractBaseModel):
#some code
class ProxyModel(MyModel):
#some code
class Meta:
proxy=True