在Django的模型中是否存在与ManyToManyField等效的get__display()

时间:2014-01-09 23:06:57

标签: python django

我正在尝试通过使用get_XX_display()来获得更加人性化的输出,其中XX是有问题的字段。这通常适用于CharFields,但我现在正在使用ManyToManyField,但我无法得到相同的响应。我怎么能以“漂亮”的方式解析选项,即使我可能有多个选项,我只想要文本部分。

我用它来显示我的复选框,所以我的选项通常是以下形式:

MY_CHOICES = (
    ('_LS','A'),
    ('_HS','B'),
    ('_SS','C'),
    ('_NS','D'),
    ('_ES','E'),
)

所以我想说如果选择了该选项则返回'A',如果选择了这两个选项则返回'A''B'。我可以用.values_list()来获取值,但不能只获得人类可读的文本,而不能获得'_LS'等等。有没有一种聪明的方法可以在没有循环并连接字符串的情况下将其删除。

模型是:

class M(models.Model):
    MyFID                  = models.ForeignKey(A)
    MyManyField            = models.ManyToManyField(Choices)


class Choices(models.Model):
    slug = models.CharField(primary_key=True, max_length=32)
    title = models.CharField(unique=True, max_length=64)
    def __str__(self):
            return self.title

0 个答案:

没有答案