从Admin站点创建另一个对象时,如何创建一个Auth组?
问题描述:
- 我有一个模型创建某种对象(让我们说一个课程)。
- 我从管理前端添加新对象
当我创建一个对象,我想自动创建一个验证组具有特定名称(并不重要,但该组的名称必须是与创建的对象字段相同)。从Admin站点创建另一个对象时,如何创建一个Auth组?
可能吗?我已阅读了有关管理员操作的一些信息,但未发现任何明确的信息。
答
您可以轻松地做创建组执行以下操作:
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")
答
但它似乎是一个很好的近似值。我管理了一个解决方案,并在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)
丹尼尔它似乎是一个不错的近似。我管理了一个解决方案,并在admin.py中覆盖了模型CourseAdmin的save_model方法。非常感谢,您的实施似乎更清洁! (在5年后我发布我的解决方案!! ...新的在这里!) – ediskrad 2013-04-04 13:50:32