如何在django Model或AdminModel中的ForeignKey字段上设置默认值?
像这样的东西(但这当然不起作用)……
created_by = models.ForeignKey(User, default=request.user)
我知道我可以在视图中“欺骗”它,但就AdminModel而言,这似乎是不可能的。
发布于 2012-11-26 17:46:25
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) )
发布于 2016-12-12 02:32:29
对于django 1.7或更高版本,
只需创建一个ForeignKey对象并保存它。" default“值可以是默认链接的对象的id。
例如,
created_by = models.ForeignKey(User, default=1)
发布于 2016-03-11 05:41:57
这是一个适用于Django 1.7的解决方案。不是在字段定义处提供默认值,而是将其设置为null-able,但覆盖'save‘函数以在第一次填充它(当它为null时):
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)
https://stackoverflow.com/questions/937954
复制相似问题