是否可以使用 django 管理页面界面创建新字段?
Is it possible to create new fields using django admin page interface?
是否可以通过 Django 管理页面创建和删除新的字符字段或文本区域而无需对它们进行硬编码?
比如我有一个简单的模型,在Django管理页面注册
class DocumentList(models.Model):
title = models.CharField(max_length=200)
def __str__(self):
return self.title
显然,它在管理页面上只有一个字符字段,例如:
DocumentList: [___________]
如果需要,我如何从 Django 管理页面添加另一个并稍后删除她,而无需在 models.py
中实际硬编码另一个 charfield/textarea,使其看起来像:
DocumentList: [___________]
*****************[___________]
Django 模型不能动态更改。您必须在模型中显式添加字段,运行 迁移以在数据库后端创建字段,并重新加载服务器进程(./manage.py runserver
自动执行此操作)。
如果您想创建一个可以容纳任意数量的文本字符串而不是一个或固定数量的模型,您需要使用与另一个模型的 many-to-many 关系。
您可以在管理员中使用自定义表单,也可以使用 form
option of the get_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,你也可以用一个action, taking input from the user in an intermediate page.
编辑:正如评论中所表明的那样,表单对于用户来说需要是动态的,而不是在创建时。因此,解决方案是使用 inlines,一旦创建并链接到当前模型,就允许用户将任意数量的相关表单添加到当前表单。
是否可以通过 Django 管理页面创建和删除新的字符字段或文本区域而无需对它们进行硬编码?
比如我有一个简单的模型,在Django管理页面注册
class DocumentList(models.Model):
title = models.CharField(max_length=200)
def __str__(self):
return self.title
显然,它在管理页面上只有一个字符字段,例如:
DocumentList: [___________]
如果需要,我如何从 Django 管理页面添加另一个并稍后删除她,而无需在 models.py
中实际硬编码另一个 charfield/textarea,使其看起来像:
DocumentList: [___________]
*****************[___________]
Django 模型不能动态更改。您必须在模型中显式添加字段,运行 迁移以在数据库后端创建字段,并重新加载服务器进程(./manage.py runserver
自动执行此操作)。
如果您想创建一个可以容纳任意数量的文本字符串而不是一个或固定数量的模型,您需要使用与另一个模型的 many-to-many 关系。
您可以在管理员中使用自定义表单,也可以使用 form
option of the get_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,你也可以用一个action, taking input from the user in an intermediate page.
编辑:正如评论中所表明的那样,表单对于用户来说需要是动态的,而不是在创建时。因此,解决方案是使用 inlines,一旦创建并链接到当前模型,就允许用户将任意数量的相关表单添加到当前表单。