使用 Parler 在 Django 管理界面中创建自定义表单
Creating Custom Forms in the Django Admin Interface with Parler
我有一个 django 1.8 实例(和 python 2),我正在使用 django-parler 进行翻译。我想自定义管理界面(我想使用 django-autocomplete-light,但这不相关)。但是使用 parler 自定义管理界面似乎比我想象的要棘手一些。这是一个简化的例子。
models.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
forms.py
from dal import autocomplete
from django import forms
from .models import Fruits
class FruitsForm(forms.ModelForm):
class Meta:
model = Fruits
fields = (
'fruits',
)
admin.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: Unknown field(s) (fruits) specified for Fruits
我能做什么?
编辑#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__'
祝你好运:)
我有一个 django 1.8 实例(和 python 2),我正在使用 django-parler 进行翻译。我想自定义管理界面(我想使用 django-autocomplete-light,但这不相关)。但是使用 parler 自定义管理界面似乎比我想象的要棘手一些。这是一个简化的例子。
models.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
forms.py
from dal import autocomplete
from django import forms
from .models import Fruits
class FruitsForm(forms.ModelForm):
class Meta:
model = Fruits
fields = (
'fruits',
)
admin.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: Unknown field(s) (fruits) specified for Fruits
我能做什么?
编辑#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__'
祝你好运:)