比方說,我有這兩個類,我想創建和附加一個項圈記錄到被像這樣創建的每個狗紀錄:Django的模型 - 如何覆蓋保存方法,並創建另一個記錄
class Collar(models.Model):
serial_number = models.IntegerField(primary_key=True, db_column='serial_number')
weight = models.CharField(max_length=10)
class Meta:
db_table = u'existing_table_from_before_django_was_born'
class Dog(models.Model):
size = models.CharField(max_length=10)
collar = models.OneToOneField(Collar,blank=True, null=True, editable=False)
def save(self, *args, **kwargs):
if not self.id:
self.collar = Collar()
if self.collar:
self.collar.weight = '10'
self.collar.save()
super(Dog,self).save(*args, **kwargs)
當我運行這段代碼,新的Collar記錄被創建,但問題是Dog.collar_id在表中顯示爲空。
這裏的扭曲,你可以注意到的是,Collar類引用了現有的表。我使它的主鍵是在MySQL中自動遞增,但也許在那裏出了問題。
當我逐步完成保存方法時,我發現它創建了Collar對象並更新了值,但self.collar.serial_number打印出'none'。
任何想法可能發生什麼?我會永遠感激。 (我在1.2.5)
這個技巧!我想知道是否值得用這個信息更新Django文檔? – Greg