你實際上並沒有創建一個新的對象 - 你只是將一個變量指向現有的記錄。像這樣的東西可能會工作:
for course in courses:
newCourse = Course() # Create a new object
newCourse.semester = 'Spring 2012'
newCourse.otherProperty = course.otherProperty # Copy other properties as needed
newCourse.save()
你甚至可以在一個方法把這個包起來的Course
類:
class Course(models.Model):
# Other stuff
def copy(semester=None):
new_course = Course()
new_course.other_property = self.other_property
if semester is not None:
new_course.semester = semester
return new_course
而只是做:
for course in courses:
newCourse = course.copy(semester='Spring 2012')
newCourse.save()
這是一個有用的技巧。比複製明確需要的所有字段更容易(在大多數情況下)。儘管我一說... ....「明確比隱含更好」?...只是漫不經心... – 2012-01-16 20:14:14
謝謝。由於新課程和課程引用同一個實體,因此我也可以只做'course.semester ='2012年春季','course.id',然後'course.save()'對嗎?只是好奇,當我做'course.save()'時,哪個課程正在保存?舊的課程還是新舊課程? – dangerChihuahua007 2012-01-17 21:12:28
此外,如何維護對舊課程對象的引用? – dangerChihuahua007 2012-01-17 21:12:50