是否可以通过Django管理页面创建和删除新的字段或textareas而无需对其进行编码?
例如,我有一个简单的模型,在Django管理页面中注册
class DocumentList(models.Model):
title = models.CharField(max_length=200)
def __str__(self):
return self.title
显然,它在管理页面上只有一个字段,类似于:
DocumentList: [___________]
我如何添加另一个,如果需要,可以从Django管理页面删除她而不实际硬编码models.py
中的另一个charfield / textarea,使其看起来像:
DocumentList: [___________]
*****************[___________]
答案 0 :(得分:0)
Django模型并不是动态改变的。您必须在模型上显式添加字段,运行迁移以在数据库后端创建字段,然后重新加载服务器进程(./manage.py runserver
自动执行此操作)。
如果要创建一个可以容纳任意数量的文本字符串而不仅仅是一个或固定数量的模型,则需要使用与另一个模型的多对多关系。
答案 1 :(得分:0)
您可以使用form
方法的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,在an intermediate page中收集用户的输入。
编辑:正如评论中显而易见的那样,表单需要对用户是动态的,而不是在创建时。因此,解决方案使用inlines,一旦创建并链接到当前模型,允许用户将任意数量的相关表单添加到当前表单。