假设我有非常基本的模型
class Message(models.Model):
msg = models.CharField(max_length=30)
此模型已注册到管理模块:
class MessageAdmin(admin.ModelAdmin):
pass
admin.site.register(Message, MessageAdmin)
目前,当我进入管理界面时,单击“添加消息”后,我只有一个表单可以输入 msg
。
我想在“添加页面”上有多个表单(也许是表单集),这样我就可以一次创建多个消息。每次都必须单击“保存并添加另一个”真的很烦人。
理想情况下,我想实现类似 InlineModelAdmin
的功能,但事实证明,您只能将它用于与所编辑对象相关的模型。
您建议使用什么来解决这个问题?
最佳答案
这可能不是您要找的东西,但如果您想同时创建多个对象,您可以这样做:
#In /forms.py
MessageAdminForm(forms.ModelForm):
msg = CharField(max_length=30)
count = IntegerField()
#In /admin.py
from app.admin import MessageAdminForm
MessageAdmin(admin.ModelAdmin):
form = MessageAdminForm
fieldsets = (
(None, {
'fields' : ('msg','count')
}),)
def save_model(self, request, obj, form, change):
obj.msg = form.cleaned_data['msg']
obj.save()
for messages in range(form.cleaned_data['count']):
message = Message(msg=form.cleaned_data['msg'])
message.save()
基本上您正在做的是为您的管理模板创建一个自定义表单,它会询问用户该对象应创建多少次。然后在 save_model 方法中解释逻辑。
关于python - django-admin - 如何修改 ModelAdmin 以一次创建多个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2993548/