我需要在模型声明阶段(在models.py中)为模型设置默认外键。我使用以下代码:
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __unicode__(self):
return str(self.pub_date)
def create_question():
q=Question(question_text='default text', pub_date=datetime.now())
q.save()
return q.id
class Choice(models.Model):
question = models.ForeignKey(Question, default=lambda: create_question())
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
这很好,创建了Choice实例和相关的Question实例......但保存Choice实例会导致创建另外两个(无用的)Question实例。似乎在Choice实例保存期间多次调用default-lambda。我不需要这些额外的问题实例。如何避免他们的创作?
注意:在python-shell中一切正常:
c=Choice(votes=5, choice_text='dim')
c.save()
创建一个Choice实例和一个Question相关实例。仅使用管理员保存按钮可以创建额外的问题实例!