python - django-admin - 如何修改 ModelAdmin 以一次创建多个对象?

标签 python django django-models django-admin django-forms

假设我有非常基本的模型

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/

相关文章:

python - 将数据帧日期时间字符串转换为 python/Pandas 中的 float

Python + Q (KDB) - 哪些工具易于使用且维护良好

Django:管理中的验证错误

django - 通过 app_label 在子目录中建模?

python - 使用 python 解析 CSV 文件并转换为 Pandas Dataframe 以绘制 Django 模板的图形

Django 模型 : Good way of storing a multiline line address as one model field

python - Windows 身份验证代码现在不再起作用

python - 子进程.Popen : how to terminate subprocess and receive its output?

Django自定义管理命令: AttributeError: 'module' object has no attribute 'Command'

python - 从多个模型创建模型以添加到数据库?