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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (168)

如何在Django模型或AdminModel中的ForeignKey字段上设置默认值?

像这样的事情(当然这不起作用)...

created_by = models.ForeignKey(User, default=request.user)

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

提问于
用户回答回答于

这里有一个在Django 1.7中工作的解决方案。与其在字段定义中提供默认设置,不如将其设置为NULL,但在第一次(当它为NULL时)覆盖“Save”函数来填充它:

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)
用户回答回答于
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) )

扫码关注云+社区