【问题标题】:Django model field with default value from another model具有来自另一个模型的默认值的 Django 模型字段
【发布时间】:2017-06-07 19:13:45
【问题描述】:

我有一个这样的模型:

class ModelA(models.Model):
    foo = models.CharField(max_length=255)
    bar = models.CharField(max_length=255)

现在我想要这样的东西:

class ModelB(models.Model):
    aaa = models.ForeignKey(ModelA)
    tar = models.Char(Field(max_length=255, default="")
    fo2 = models.CharField(max_length=255, default=???)

我希望 fo2ModelA 获取值,除非提供其他值。

我该怎么做?

【问题讨论】:

  • 你不应该那样做。或许可以考虑重写 ModelB 的 save 方法,改为从 ModelA 中查找感兴趣的值。

标签: django python-3.x django-models


【解决方案1】:

您希望fo2 的默认值等于与创建时aaa 的特定实例相关的值吗?

这样做的方法是覆盖save 方法

class ModelB(models.Model):
    aaa = models.ForeignKey(ModelA)
    tar = models.Char(Field(max_length=255, default="")
    fo2 = models.CharField(max_length=255)

    def save(self, *args, **kwargs):
        if self.fo2 is None:
            self.fo2 = self.aaa._value_taken_from_Model_A
        super(ModelB, self).save(*args, **kwargs)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-26
    • 2016-01-02
    • 2011-05-21
    • 2012-12-16
    • 2021-03-27
    • 2011-04-04
    • 2021-01-31
    • 1970-01-01
    相关资源
    最近更新 更多