Django 除_str以外的显示字段__
我试图显示以下模型中的版本字段,而不是默认的str,即field2\u名称: 注意:这个SO链接可能超出了我的需要,但我不是100%确定。我试图实现这一点,但没有成功 还要注意的是,我在上尝试了这个示例,但没有成功 型号(通用名称): 表格: 这是可行的-它按预期返回field2_名称 如何返回版本-最简单的方法是什么Django 除_str以外的显示字段__,django,django-forms,modelchoicefield,Django,Django Forms,Modelchoicefield,我试图显示以下模型中的版本字段,而不是默认的str,即field2\u名称: 注意:这个SO链接可能超出了我的需要,但我不是100%确定。我试图实现这一点,但没有成功 还要注意的是,我在上尝试了这个示例,但没有成功 型号(通用名称): 表格: 这是可行的-它按预期返回field2_名称 如何返回版本-最简单的方法是什么 非常感谢您的帮助或指导。如果我没有弄错您的问题,您可以更改对象字符串的表示形式 def __str__(self): return str(self.version) 然后
非常感谢您的帮助或指导。如果我没有弄错您的问题,您可以更改对象字符串的表示形式
def __str__(self):
return str(self.version)
然后,您可以继承ModelChoiceField并从_实例方法重写标签_ 甚至像这样给它打补丁
self.fields['field_name'].label_from_instance = self.label_from_instance
@staticmethod
def label_from_instance(self):
return str(self.value)
从:
模型的\uuuu str\uuuu
(\uuuuu unicode\uuuu
在Python 2上)方法将被调用,以生成用于字段选择的对象的字符串表示形式;若要提供自定义表示,请将modelcoocefield
子类化,并覆盖label\u from\u instance
。此方法将接收一个模型对象,并应返回一个适合表示该对象的字符串。例如:
from django.forms import ModelChoiceField
class MyModelChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
return "My Object #%i" % obj.id
感谢您的回复:)很遗憾,我无法更改此特定模型的str。然后您可以继承ModelChoiceField并覆盖来自_实例方法的label_谢谢-我今天将进一步查看来自_实例的label_和您的想法。结果证明我能够将str更改为我需要的内容-它尚未被使用。我将不得不把这件事放在次要位置,因为我相信这件事在将来是需要的。给了你+1。@iklinac有没有一种方法可以在一行中编写monkey patch方法?例如,将
label\u from\u instance
例程合并到self.fields['field\u name']的右侧。label\u from\u instance=self。label\u from\u instance
感谢您的回复。我尝试了这个版本(见第一个SO链接),但无法让它工作。但也有可能是我做得不对。今天我将看一看这个具体的例子。事实上,我并不十分清楚这个例子中到底发生了什么,但我会“深入研究”。)给你+1-请看我对iklinac的评论。
self.fields['field_name'].label_from_instance = self.label_from_instance
@staticmethod
def label_from_instance(self):
return str(self.value)
from django.forms import ModelChoiceField
class MyModelChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
return "My Object #%i" % obj.id