注意:
本实验是接着 《Django 自定义逻辑添加(通过自定义 save 对象实现)(一次性完成多对多表数据的插入)》而继续的
正文:
将 mysite/user/models.py 中的以下内容:
class Clazz(models.Model):
    cname = models.CharField(max_length=30)
class Student(models.Model):
    sname = models.CharField(max_length=30)
    score = models.PositiveBigIntegerField()
    cls = models.ForeignKey(Clazz,on_delete=models.CASCADE)
    def __str__(self):
        return u'Student:%s,%s'%(self.sname,self.score)
    def  save(self, force_insert=False, force_update=False, using=None, update_fields=None):
        try:
            self.cls = Clazz.objects.get(cname=self.cls.cname)
        except Clazz.DoesNotExist:
            self.cls = Clazz.objects.create(cname=self.cls.cname)
        #Insertion of student table
        models.Model.save(self, force_insert=False, force_update=False,using=None, update_fields=None)修改为:
class Clazz(models.Model):
    cname = models.CharField(max_length=30)
class Student(models.Model):
    sname = models.CharField(max_length=30)
    score = models.PositiveBigIntegerField()
    cls = models.ForeignKey(Clazz,on_delete=models.CASCADE)
    def __str__(self):
        return u'Student:%s,%s'%(self.sname,self.score)
    from django.db.transaction import atomic
    @atomic
    def  save(self, force_insert=False, force_update=False, using=None, update_fields=None):
        try:
            self.cls = Clazz.objects.get(cname=self.cls.cname)
        except Clazz.DoesNotExist:
            self.cls = Clazz.objects.create(cname=self.cls.cname)
        #Insertion of student table
        models.Model.save(self, force_insert=False, force_update=False,using=None, update_fields=None)
