- 我有一个创建某种对象的模型(比如说课程)。
- 我从管理前端添加新对象
当我创建一个对象时,我想自动创建一个具有特定名称的Auth Group(不重要,但组的名称必须与创建的对象字段相同)。
是否可以?我已经阅读了一些有关管理员操作的内容,但没有发现任何明确的内容。
当我创建一个对象时,我想自动创建一个具有特定名称的Auth Group(不重要,但组的名称必须与创建的对象字段相同)。
是否可以?我已经阅读了一些有关管理员操作的内容,但没有发现任何明确的内容。
您可以通过执行以下操作轻松创建组:
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")
丹尼尔这似乎是一个很好的近似值。我已经管理了一个解决方案,并在 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)