2012-09-30 85 views
0
class Sample(models.model): 
sampleID = models.AutoField(primary_key=True) 
    something = models.IntegerField() 
    . 
    . 
    . 

def save(self, *args, **kwargs): 
    is_new = self.pk is None 
    super(Sample, self).save(*args, **kwargs) 
    if is_new: 
     alpha = AnotherSample() 
     alpha.asampleID = self.pk 
     alpha.say = "Lolz" 
     alpha.save() 

我无法将我的主键分配给Sample的AnotherSample参照键。它总是说获取外键值

Cannot assign "1L": "AnotherSample.asampleID" must be a "Sample" instance. 

回答

1

the docs

在幕后,Django的附加"_id"字段名来创建其数据库列名。

alpha.asampleID_id = self.pk 

这就是为什么具有 “ID” 后缀是不合适的。

+0

也允许alpha.pk? – danihp

+0

@danihp:好的。但是这并不意味着这个PK有一个'Sample'。 –

+0

sampleID是PK ... – danihp

0

从给定的错误消息,它看起来像你试图保存一段关系。你应该传递实际的对象,而不是它的主键。

def save(self, *args, **kwargs): 
    is_new = self.pk is None 
    super(Sample, self).save(*args, **kwargs) 
    if is_new: 
     alpha = AnotherSample() 
     alpha.asampleID = self 
     alpha.say = "Lolz" 
     alpha.save()