首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何为Django ForeignKey模型或AdminModel字段指定默认值?

如何为Django ForeignKey模型或AdminModel字段指定默认值?
EN

Stack Overflow用户
提问于 2009-06-02 04:56:30
回答 13查看 52.4K关注 0票数 33

如何在django Model或AdminModel中的ForeignKey字段上设置默认值?

像这样的东西(但这当然不起作用)……

代码语言:javascript
复制
created_by = models.ForeignKey(User, default=request.user)

我知道我可以在视图中“欺骗”它,但就AdminModel而言,这似乎是不可能的。

EN

回答 13

Stack Overflow用户

发布于 2012-11-26 17:46:25

代码语言:javascript
复制
class Foo(models.Model):
    a = models.CharField(max_length=42)

class Bar(models.Model):
    b = models.CharField(max_length=42)
    a = models.ForeignKey(Foo, default=lambda: Foo.objects.get(id=1) )
票数 38
EN

Stack Overflow用户

发布于 2016-12-12 02:32:29

对于django 1.7或更高版本,

只需创建一个ForeignKey对象并保存它。" default“值可以是默认链接的对象的id。

例如,

代码语言:javascript
复制
created_by = models.ForeignKey(User, default=1)
票数 16
EN

Stack Overflow用户

发布于 2016-03-11 05:41:57

这是一个适用于Django 1.7的解决方案。不是在字段定义处提供默认值,而是将其设置为null-able,但覆盖'save‘函数以在第一次填充它(当它为null时):

代码语言:javascript
复制
class Foo(models.Model):
    a = models.CharField(max_length=42)

class Bar(models.Model):
    b = models.CharField(max_length=42)
    a = models.ForeignKey(Foo, null=True)

    def save(self, *args, **kwargs):
        if self.a is None:  # Set default reference
            self.a = Foo.objects.get(id=1)
        super(Bar, self).save(*args, **kwargs)
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/937954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档