gpt4 book ai didi

python - 在 ModelChoiceField Django 中使用 __unicode__ 以外的方法

转载 作者:太空狗 更新时间:2023-10-29 22:16:33 25 4
gpt4 key购买 nike

我正在使用 Django 处理一些表单。一个字段是模型中的 ForeignKey,因此在表单中表示为 ModelChoiceFieldModelChoiceField 当前使用模型的 __unicode__ 方法来填充列表,这不是我想要的行为。我希望能够使用模型的另一种方法。从文档中,我似乎可以强制使用自己的 QuerySet,但我看不出这将如何帮助我使用 __unicode__ 以外的方法。

如果可能的话,我真的宁愿避免将其与默认表单方法分开。

有什么建议吗?

最佳答案

您可以覆盖 label_from_instance 以指定不同的方法:

from django.forms.models import ModelChoiceField

class MyModelChoiceField(ModelChoiceField):

def label_from_instance(self, obj):
return obj.my_custom_method()

然后您可以在表单中使用此字段。此方法旨在在子类中被覆盖。这是 django.forms.models 中的原始来源:

# this method will be used to create object labels by the QuerySetIterator.
# Override it to customize the label.
def label_from_instance(self, obj):
"""
This method is used to convert objects into strings; it's used to
generate the labels for the choices presented by this object. Subclasses
can override this method to customize the display of the choices.
"""
return smart_unicode(obj)

关于python - 在 ModelChoiceField Django 中使用 __unicode__ 以外的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11437060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com