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

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

是否可以?我已经阅读了一些有关管理员操作的内容,但没有发现任何明确的内容。

4

2 回答 2

5

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

from django.contrib.auth.models import Group

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

您可以像这样将此代码放入您的模型中(或者创建一个自定义模型管理器):

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")
于 2013-04-04T12:20:08.137 回答
1

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

这是我所做的:

----- 管理员.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)
于 2013-04-05T07:48:54.487 回答