Python 如何在自定义Django ModelChoiceField上获取帮助_文本

Python 如何在自定义Django ModelChoiceField上获取帮助_文本,python,django,modelform,modelchoicefield,Python,Django,Modelform,Modelchoicefield,我正在创建一个modelcooicefield,以便显示外键的自定义标签,但在这样做时,Django不再在表单上显示help\u文本。我怎样才能取回帮助文本 型号.py class Event(models.Model): title = models.CharField(max_length=120) category = models.ForeignKey(Category, default=Category.DEFAULT_CATEGORY_ID, on_delete=m

我正在创建一个
modelcooicefield
,以便显示外键的自定义标签,但在这样做时,Django不再在表单上显示
help\u文本。我怎样才能取回帮助文本

型号.py

class Event(models.Model):

    title = models.CharField(max_length=120)
    category = models.ForeignKey(Category, default=Category.DEFAULT_CATEGORY_ID, on_delete=models.SET_NULL, null=True,
                                 help_text="By default, events are sorted by category in the events list.")
class CategoryModelChoiceField(forms.ModelChoiceField):
    def label_from_instance(self, obj):
        return "%s (%s)" % (obj.name, obj.description)

class EventForm(forms.ModelForm):

    category = CategoryModelChoiceField(
        queryset=Category.objects.all(),
    )

    class Meta:
        model = Event
        fields = [...]
forms.py

class Event(models.Model):

    title = models.CharField(max_length=120)
    category = models.ForeignKey(Category, default=Category.DEFAULT_CATEGORY_ID, on_delete=models.SET_NULL, null=True,
                                 help_text="By default, events are sorted by category in the events list.")
class CategoryModelChoiceField(forms.ModelChoiceField):
    def label_from_instance(self, obj):
        return "%s (%s)" % (obj.name, obj.description)

class EventForm(forms.ModelForm):

    category = CategoryModelChoiceField(
        queryset=Category.objects.all(),
    )

    class Meta:
        model = Event
        fields = [...]

您可以将其添加到
Meta

from django.utils.translation import gettext_lazy as _

class AuthorForm(ModelForm):
    class Meta:
        model = Author
        fields = ('name', 'title', 'birth_date')
        labels = {
            'name': _('Writer'),
        }
        help_texts = {
            'name': _('Some useful help text.'),
        }
        error_messages = {
            'name': {
                'max_length': _("This writer's name is too long."),
            },
        }

此外,您还可以使用
\uuuu init\uuu
方法添加

class EventForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        super(EventForm, self).__init__(*args, **kwargs)
        self.fields['category'].help_text = ''

在问题下方注释的帮助下,以下是我如何获得自定义表单字段以从模型中获取默认帮助文本:

class EventForm(forms.ModelForm):
    category = CategoryModelChoiceField(
        queryset=Category.objects.all(),
        help_text=Event._meta.get_field('category').help_text,
)

帮助\u文本
作为参数传递到
类别模型选择字段
。也许您可以像
help\u text=self.\u meta.model.category.help\u text
或类似的方式访问它。获取模型字段中已经存在的帮助文本如何?