【发布时间】:2013-09-22 08:12:50
【问题描述】:
我是 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')
似乎我可以使用模型的 clean 方法来执行此操作,但我希望能够将整个事情包装在一个事务中,这样如果稍后它无法创建课程,它不会创建相关的 Group 对象。有没有办法实现这一目标?
另外,我在这里做错了吗? Django 是否提供了更好的方法来做到这一点?
【问题讨论】:
标签: python django django-models