在django模型中设置默认的ForeignKey

时间:2014-12-26 01:15:07

标签: python django

我需要在模型声明阶段(在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相关实例。仅使用管理员保存按钮可以创建额外的问题实例!

0 个答案:

没有答案