覆盖Django Create_object

时间:2010-07-29 18:50:46

标签: django django-models

嗨我想覆盖 django.views.generic.create_update.create_object

通过url

在对象[此处项目]上调用创建时更精确

例如:http://localhost:8000/projects/create/

我需要在控件传递给create_object之前检查一些权限。我知道装饰者会帮助我这样做。我尝试使用装饰器,但不幸的是它没有成功。有人请告诉我我应该怎么做。这将非常有帮助 提前感谢

1 个答案:

答案 0 :(得分:1)

你需要的是经理。

详细信息:http://docs.djangoproject.com/en/dev/topics/db/managers/

简而言之:基本上django中的所有模型都由管理者管理,管理员负责创建对象并从数据库中获取内容等等。您所做的是创建一个自定义管理器并将其分配给您想要更改其行为的模型。

基本上是这样的:

class MyModel(models.Model):
  property = models.SomeField()

  objects = MyManager()

class MyManager(models.Manager):
      def create(self, *args, **kwargs):
          if <check permissions>:
         return super(MyManager, self).create(*args, **kwargs)
      else:
        <raise some error>