重写ModelAdmin中的get_字段将在所有模型上返回此字段

2024-10-01 15:31:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在ModelAdmin中添加与语言相关的字段,以便在之后另存为json

但是这些字段出现在我的应用程序的所有模型中。为什么?

例如,使用一个简单的应用程序:

models.py:

from django.db import models

class TestModel2(models.Model):
    txt_field = models.TextField()

class TestModel(models.Model):
    txt_field = models.TextField()

admin.py:

from moduleadmin.models import TestModel, TestModel2
from django.conf import settings
from django import forms

class TestModelAdmin(admin.ModelAdmin):

    def get_fields(self, request, obj=None):
        my_fields = super(TestModelAdmin, self).get_fields(request, obj)
        new_fields = [(lang[0], forms.CharField(max_length=50, required=(lang[0] == settings.LANGUAGE_CODE))
            ) for lang in settings.LANGUAGES]
        for f in new_fields:
            if f[0] not in my_fields:
                my_fields.append(f[0])
            self.form.declared_fields.update({f[0]: f[1]})
        return my_fields

admin.site.register(TestModel, TestModelAdmin)
admin.site.register(TestModel2)

在settings.py中,我添加了:


LANGUAGES = (
    ('fr', 'French'),
    ('en', 'English'),
)

因此,如果我尝试添加一个TestModel2条目,就可以了。 但是,如果我转到TestModel添加条目表单,并返回TestModel2添加,我将在表单中显示这两个字段

你能帮我吗?或者有更好的方法

谢谢


Tags: djangofrompyimportselffieldslangsettings
1条回答
网友
1楼 · 发布于 2024-10-01 15:31:01

如果我错了,请纠正我,但看起来您希望有基于所用语言的字段。如果是这样的话,你最好看看像django-modeltranslation这样的第三方库

相关问题 更多 >

    热门问题