如何使用自定义表单将自定义页面添加到django管理员,而不与任何模型相关?
我想通过django admin导入csv数据,使用TextArea或FileField来批量创建模型。我学习了如何覆盖模板块,如何向django admin添加新的URL。但是我不知道如何解决我的问题。我想用我的表单创建自定义管理员页面。传递数据,解析数据并如何使用自定义表单将自定义页面添加到django管理员,而不与任何模型相关?,django,django-admin,Django,Django Admin,我想通过django admin导入csv数据,使用TextArea或FileField来批量创建模型。我学习了如何覆盖模板块,如何向django admin添加新的URL。但是我不知道如何解决我的问题。我想用我的表单创建自定义管理员页面。传递数据,解析数据并bulk\u创建mymodel对象。你们能建议我怎么做吗?我找到了一个关于这种情况的片段 from django.contrib import admin, messages from django.http import HttpResp
bulk\u创建
mymodel对象。你们能建议我怎么做吗?我找到了一个关于这种情况的片段
from django.contrib import admin, messages
from django.http import HttpResponseRedirect
from django.shortcuts import render
from my_app.forms import CustomForm
class FakeModel(object):
class _meta:
app_label = 'my_app' # This is the app that the form will exist under
model_name = 'custom-form' # This is what will be used in the link url
verbose_name_plural = 'Custom AdminForm' # This is the name used in the link text
object_name = 'ObjectName'
swapped = False
abstract = False
class MyCustomAdminForm(admin.ModelAdmin):
"""
This is a funky way to register a regular view with the Django Admin.
"""
def has_add_permission(*args, **kwargs):
return False
def has_change_permission(*args, **kwargs):
return True
def has_delete_permission(*args, **kwargs):
return False
def changelist_view(self, request):
context = {'title': 'My Custom AdminForm'}
if request.method == 'POST':
form = CustomForm(request.POST)
if form.is_valid():
# Do your magic with the completed form data.
# Let the user know that form was submitted.
messages.success(request, 'Congrats, form submitted!')
return HttpResponseRedirect('')
else:
messages.error(
request, 'Please correct the error below'
)
else:
form = CustomForm()
context['form'] = form
return render(request, 'admin/change_form.html', context)
admin.site.register([FakeModel], MyCustomAdminForm)
from django import forms
class CustomForm(forms.Form):
# Your run-of-the-mill form here
使用代理模型可以节省一些输入:
class ImportCSVData(SomeModel):
class Meta:
proxy = True
@admin.register(ImportCSVData)
class MyCustomAdminForm(admin.ModelAdmin):
... as in accepted answer ...
我很高兴地说,因为1.3.0版附带了
etc.admin.CustomModelPage
。因此,您可能需要执行以下操作:
从etc.admin导入CustomModelPage
类别页面(CustomModelPage):
标题='测试页面1'#设置页面标题
#定义一些字段。
my_field=models.CharField('some title',max_length=10)
def保存(自我):
#这里使用值实现批量创建
#自字段属性,例如self.my_字段。
super().save()
#在Django admin中注册此页面。
BulkPage.register()
。