【问题标题】:Creating Custom Forms in the Django Admin Interface with Parler使用 Parler 在 Django 管理界面中创建自定义表单
【发布时间】:2017-04-10 09:35:01
【问题描述】:

我有一个 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

我能做什么?

【问题讨论】:

    标签: python django django-forms django-admin django-parler


    【解决方案1】:

    编辑#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.core.exceptions.FieldError: Unknown field(s) (translations) specified for Fruits
    • 我编辑了我的答案,看看(将translations更改为fname
    • 即使这样也行不通:(django.core.exceptions.FieldError: Unknown field(s) (fname) specified for Fruits
    • 我找到了一些信息,看看重新编辑的答案
    • 很高兴知道伙计!快乐编码:)