小编wji*_*jin的帖子

在Django中模型创建时自动创建相关对象

我是Django的新手,请原谅我的无知:)

假设我有一个具有几个外键关系的模型,当我创建模型的实例时,我希望它自动为外键对象生成新实例.在这种情况下,我将课程注册建模为一个组,我将特定组作为模型上的外键引用.

class Course(models.Model):
    student_group = models.OneToOneField(Group, related_name="course_taken")
    teacher_group = models.OneToOneField(Group, related_name="course_taught")

    def clean(self):
        if self.id:
            try:
                self.student_group
            except Group.DoesNotExist:
                self.student_group, _ = Group.objects.get_or_create(name='_course_' + self.id + '_student')

            try:
                self.teacher_group
            except Group.DoesNotExist:
                self.teacher_group, _ = Group.objects.get_or_create(name='_course_' + self.id + '_teacher')
Run Code Online (Sandbox Code Playgroud)

看起来我可以挂钩模型的干净方法来做到这一点,但我希望能够将整个事情包装在一个事务中,这样如果以后无法创建课程,它就赢了不要创建相关的Group对象.有没有办法实现这个目标?

另外,我在这里做错了吗?Django提供了更好的方法吗?

python django django-models

12
推荐指数
2
解决办法
1万
查看次数

标签 统计

django ×1

django-models ×1

python ×1