Skip to main content
 首页 » 编程设计

python之使用 Parler 在 Django 管理界面中创建自定义表单

2025年02月15日34JeffreyZhao

我有一个 django 1.8 实例(和 python 2),我正在使用 django-parler 进行翻译。我想自定义管理界面(我想使用 django-autocomplete-light,但这不相关)。但是使用 parler 自定义管理界面似乎比我想象的要棘手一些。这是一个简化的例子。

模型.py
from django.db import models 
from parler.models import TranslatableModel, TranslatedFields 
 
 
class Fruits(TranslatableModel): 
    translations = TranslatedFields( 
        fname=models.CharField(max_length=200) 
    ) 
 
    def __unicode__(self): 
        return self.fname 

表单.py
from dal import autocomplete 
from django import forms 
 
from .models import Fruits 
 
class FruitsForm(forms.ModelForm): 
    class Meta: 
        model = Fruits 
        fields = ( 
            'fruits', 
        ) 

管理员.py
from django.contrib import admin 
from parler.admin import TranslatableAdmin 
 
from .forms import FruitsForm 
from .models import Fruits 
 
 
class FruitsAdmin(TranslatableAdmin): 
    form = FruitsForm 
    model = Fruits 
 
 
admin.site.register(Fruits, FruitsAdmin) 

问题

django.core.exceptions.FieldError:为水果指定的未知字段(水果)

我能做什么?

请您参考如下方法:

编辑#1:

经过一番搜索后,我认为您必须使表单继承自 parler.formsTranslatableModelForm 才能按预期工作。

更改您的 FruitsForm 以匹配以下内容:

from dal import autocomplete 
from django import forms 
from parler.forms import TranslatableModelForm 
 
from .models import Fruits 
 
class FruitsForm(TranslatableModelForm): 
    class Meta: 
        model = Fruits 
        fields = ( 
            'fname', 
        ) 

如果 fname 给你同样的问题,尝试设置 fields='__all__'

祝你好运:)