簡體   English   中英

Django CreateView 字段標簽

[英]Django CreateView field labels

我正在做一個有章節的項目,每個章節都有標題、內容和順序。 我想保持字段“訂單”的名稱不變,但在 CreateView 中將該字段顯示為其他內容,例如“章節編號”。 我發現的最佳信息建議更新 Meta class 中的“標簽”屬性,但這對我不起作用。

這是我現在正在使用的,它不起作用:

class ChapterCreate(CreateView):
    model = models.Chapter
    fields = [
        'title',
        'content',
        'order',
    ]

    class Meta:
        labels = {
            'order': _('Chapter number'),
        }

我也嘗試過在 Meta 之外使用“標簽”屬性,但這也不起作用。 我應該改用 ModelForm,還是有正確的方法來做到這一點?

在這種情況下,最簡單的解決方案是為您的模型字段設置verbose_name

class Chapter(models.Model):
    order = models.IntegerField(verbose_name= _('Chapter number'))

注意我在這個例子中使用了 IntegerField,請使用任何需要的類型。

即使它是一個古老的主題,我認為現在使用 Django 3.1 做到這一點的方法是:

在views.py中

class ChapterCreate(CreateView):
    model = models.Chapter
    form_class = ChapterForm

並在 forms.py 中,定義 ChapterForm

class ChapterForm(ModelForm):
    class Meta:    
        model = models.Chapter
        fields = ('title', 'content','order') 
        labels = {
            'order': _('Chapter number'),
        }  

如果您想要 model 字段的verbose_name和表單字段的面向用戶的 label 的不同值,最快的方法可能是覆蓋CreateViewget_form(…)方法:

class ChapterCreate(CreateView):
    (...)

    def get_form(self, form_class=None):
        form = super().get_form(form_class)
        form.fields['order'].label = _('Chapter number')
        return form

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM