2013-04-04 47 views
3
  • 我有一个模型创建某种对象(让我们说一个课程)。
  • 我从管理前端添加新对象

当我创建一个对象,我想自动创建一个验证组具有特定名称(并不重要,但该组的名称必须是与创建的对象字段相同)。从Admin站点创建另一个对象时,如何创建一个Auth组?

可能吗?我已阅读了有关管理员操作的一些信息,但未发现任何明确的信息。

+0

丹尼尔它似乎是一个不错的近似。我管理了一个解决方案,并在admin.py中覆盖了模型CourseAdmin的save_model方法。非常感谢,您的实施似乎更清洁! (在5年后我发布我的解决方案!! ...新的在这里!) – ediskrad 2013-04-04 13:50:32

回答

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") 
+0

但它似乎好吧!我已经解决它覆盖admin.py中的方法save_model: – ediskrad 2013-04-04 13:45:57

+0

mmm。我不确定是否可以在管理前端内部实现此功能......单击save方法时,如何调用create方法? – ediskrad 2013-04-04 14:17:05

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)