Django - 用值替换“模型对象”

Posted

技术标签:

【中文标题】Django - 用值替换“模型对象”【英文标题】:Django - replace "model object" by the value 【发布时间】:2020-02-08 17:52:22 【问题描述】:

我有一个模型货币定义如下:

class Currency(models.Model):

    """
    Currency Model
    Defines the attribute of Currency
    """

    class Meta:
        verbose_name        = "Currency"
        verbose_name_plural = "Currencies"
        ordering            = ['Currency_Name']

        def __str__(self):
            return self.Currency_Name

    Currency_Date           = models.DateTimeField(auto_now_add=True)
    Currency_Date_Update    = models.DateTimeField(auto_now=True)
    Currency_Name           = models.CharField(max_length=3, unique=True)
    Is_Secondary_Ccy        = models.CharField(max_length=1, choices=Y_N_BOOLEAN)
    Primary_Currency        = models.ForeignKey('self', on_delete=models.DO_NOTHING, null=True)   # to refer to itself
    Primary_Factor          = models.IntegerField(default=1)
    Currency_Name_Reuters   = models.CharField(max_length=3)

模型通过列“Primary_Currency”链接到自身

在我的管理员(下图)中,我可以看到链接,但如果我打开下拉菜单,标签不是用户友好的“货币对象 (0) 等...”

我可以拥有“Primary_Currency”的值“Currency_Name”吗?

感谢您的帮助:)

【问题讨论】:

使用__str__方法 【参考方案1】:

使用模型类的__str__()方法,

class Currency(models.Model):
    ...

    # your code

    def __str__(self):
        try:
            return self.Primary_Currency.Currency_Name
        except AttributeError:
            return self.Currency_Name

【讨论】:

以上是关于Django - 用值替换“模型对象”的主要内容,如果未能解决你的问题,请参考以下文章

用值替换 NULL

获取模型对象的 id,它是另一个模型对象 django 的 FK

在Django中将模型对象从模型复制到另一个模型

如何模拟 Django 模型对象(及其方法)?

获取所有相关的 Django 模型对象

用值替换整个数据框中的字符串