当我创建一个对象时,我想自动创建一个具有特定名称的Auth组(不重要,但该组的名称必须与创建的对象字段相同)。
有可能吗?我已经阅读了一些关于管理员行为的内容,但没有找到任何明确的内容。
答案 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)