基类模型和继承的模型如下:
class Profile(models.Model):
user = models.ForeignKey(User, unique=True)
...
class Student(Profile):
...
class Teacher(Profile):
...
我有Student类的对象(其数据存储在db-Profile表中的两个表中,而Student表有一个指向Profile表的指针)。我需要将该Profile表行分配给Teacher对象并删除Student对象,即不丢失Profile表数据的内容并保留该行的相同id。应该如何做?
谢谢,
任何帮助将不胜感激..
答案 0 :(得分:1)
在幕后,Django在Student和Teacher模型上创建了一个名为profile_ptr_id的字段。所以你可能不得不操纵它。由于Django的具体继承如何工作,每个Student和Teacher对象的主键实际上是这个profile_ptr_id字段。因此,我不确定是否同时允许具有相同profile_ptr_ids的Student和Teacher对象。
您可以尝试解决此问题的一种方法如下:
我从未尝试过这个,所以我真的不能说它是否会起作用......
答案 1 :(得分:0)
如果您有一名学生想要成为具有部分或全部领域的教师,并且您可以输入字段,那么您可以这样做:
teacher = Teacher(id=student.id, user=student.user,
name=student.name, email=student.email, ...)
student.delete()
teacher.save()
在保存具有相同ID的新对象之前,设置ID并删除旧对象非常重要。