在管理员站点创建另一个对象时,如何动态创建Auth组?

时间:2013-04-04 11:21:16

标签: django object-model

  • 我有一个模型可以创建某种对象(比方说一个课程)。
  • 我从管理员前端添加新对象

当我创建一个对象时,我想自动创建一个具有特定名称的Auth组(不重要,但该组的名称必须与创建的对象字段相同)。

有可能吗?我已经阅读了一些关于管理员行为的内容,但没有找到任何明确的内容。

2 个答案:

答案 0 :(得分:5)

您可以通过执行以下操作轻松创建群组:

from django.contrib.auth.models import Group

newgroup = Group.objects.create(name=course.name)

您可以将此代码放入模型中like this(或者创建custom model manager):

from django.contrib.auth.models import User, Group

class Course(models.Model):
    name = models.CharField(max_length=100)

    @classmethod
    def create(course, name):
        newcourse = course(title=name)

        # create the group for the course
        newgroup = Group.objects.create(name=newcourse.name)

        return newcourse

然后,您可以创建课程:

course = Course.create(name="Django: The Web framework for perfectionists with deadlines")

答案 1 :(得分:1)

丹尼尔似乎是一个很好的近似。我已经管理了一个解决方案,并在admin.py中覆盖了模型CourseAdmin的方法save_model。非常感谢,您的实施似乎更清晰!

这就是我所做的:

----- admin.py -----

from django.contrib.auth.models import Group

class CourseAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        g = Group(name=obj.code)
        g.save()
        obj.save() # Without this line the object is not saved into the Course model!

admin.site.register(CourseAdmin)