繁体   English   中英

在Django模型中设置默认的ForeignKey

[英]Setting up default ForeignKey in django models

我需要在模型声明阶段(在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。 我不需要这些额外的Question实例。 如何避免它们的创造?

注意:在python-shell中,一切正常

c=Choice(votes=5, choice_text='dim')
c.save()

创建一个Choice实例和一个Question关联实例。 仅使用管理员保存按钮会导致额外的问题实例创建!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM