是否可以使用 django 管理页面界面创建新字段



是否有可能通过 Django 管理页面创建和删除新的字符字段或文本区域,而无需对其进行编码?

例如,我有一个简单的模型,在 Django 管理页面注册

class DocumentList(models.Model):
    title = models.CharField(max_length=200)
    def __str__(self):
        return self.title

显然,它在管理页面上只有一个字符字段,如下所示:

DocumentList: [___________]

如果需要,我如何添加另一个并在以后从 Django 管理页面中删除她,而无需在 models.py 中实际硬编码另一个字符/文本区域,使其看起来像:

DocumentList: [___________]
*****************[___________]

Django 模型并不意味着要动态更改。您必须在模型上显式添加字段,运行迁移以在数据库后端中创建字段,然后重新加载服务器进程(./manage.py runserver自动执行此操作(。

如果要创建一个可以容纳任意数量的文本字符串而不是一个或固定数量的文本字符串的模型,则需要使用与另一个模型的多对多关系。

您可以使用 get_form 方法的 form 选项在管理员中使用自定义表单。这是有关如何传递自定义form的文档示例:

from django import forms
from django.contrib import admin
from myapp.models import Person
class PersonForm(forms.ModelForm):
    class Meta:
        model = Person
        exclude = ['name']
class PersonAdmin(admin.ModelAdmin):
    exclude = ['age']
    form = PersonForm

您可以像以任何形式添加额外的字段。

我想知道你为什么要这个。由于您在评论中说这是向 API 提交信息,因此您还可以使用操作,在中间页面中获取用户的输入。


编辑:正如注释中明显的那样,表单需要对用户是动态的,而不是在创建时。因此,该解决方案使用内联,一旦创建并链接到当前模型,用户就可以将任意数量的相关表单添加到当前表单。

最新更新