是否可以使用Django管理页面接口创建新字段?

2024-10-16 20:39:36 发布

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

是否可以通过Django管理页面创建和删除新的charfields或textArea,而无需对它们进行harcoding?在

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

class DocumentList(models.Model):
    title = models.CharField(max_length=200)

    def __str__(self):
        return self.title

显然,它在管理页面上只有一个charfield,类似于:

^{pr2}$

如果需要,我如何在Django管理页面中添加另一个charfield/textarea,而不必在models.py中硬编码另一个charfield/textarea,使其看起来像:

^{3}$

Tags: django模型selfmodeltitlemodels页面class
2条回答

您可以通过使用^{}方法的^{}选项在管理中使用自定义窗体。以下是有关如何传递自定义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提交信息,所以您还可以使用action,从an intermediate page中的用户获取输入。在


编辑:正如在注释中所显示的那样,表单对于用户来说需要是动态的,而不是在创建时。因此,解决方案是使用inlines,它一旦创建并链接到当前模型,就允许用户向当前表单添加任意数量的相关表单。在

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

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

相关问题 更多 >