Python Django框架:通过主键确定模型字段的默认值

时间:2017-07-30 05:01:42

标签: python django django-models

在Django中,有没有办法根据这个模型实例的主键来确定我想用于模型的字段默认值的值? 例如: 如果我有一个Question对象,其中包含字段question_title,我尝试将此字段设置为:

question_title = models.CharField(max_length=100, default="title")

但我不想只说default="title",而是说:

default="title"+self.pk

问题是,(至少我认为问题是什么)当在运行时定义类成员时,没有实例化,所以从Python解释器级别来看,没有办法知道self.pk的值是什么具有。

如果是,我尝试实现 init ()函数,但仍然会出现类型错误:

class Question(models.Model):

    question_title = models.CharField(max_length=100, default="untitled")
    question_text = models.CharField(max_length=200, default ="content")

    def __init__(self):
        self.question_title = models.CharField(max_length=100, default="title"+str(self.pk))
        self.question_text = models.CharField(max_length=200, default ="content")

    def __str__(self):
        return self.question_title 

错误消息是:

__init__() takes exactly 1 argument (4 given)

1 个答案:

答案 0 :(得分:0)

创建一个默认情况下可调用的方法。

例如:

def get_default_title(instance, text):
    # this goes outside of your model
    title = "%s %s" % (text, instance.id)
    return title


question_title = models.CharField(max_length=100, default=get_default_title)

如果这对您有用,请告诉我。

相关问题