python自定义表单_django admin添加自定义按钮自定义表单

我想在’Add model_name’附近添加一个自定义按钮.当我点击新创建的按钮时,我想显示一个自定义表单,我可以从选择框中选择一个模型.当我点击保存时,我想保存这个模型,并有机会获得一些参数,所以这是一个’添加’,但没有再选择所有选项.我举一个明显的例子:

我有一个型号名称’Book’.我第一次创建一个新的书籍条目,我有一个表格’添加书’,我必须完全填写表格.所以我有一本主键= Book_1_1的书但现在我想要添加第二本书,它与第一本书相同,但版本改变了,所以我想要一本新书,但我不想再选择所有项目了在标准的“添加书籍”表单中,我想要点击创建新实例 – >我可以从包含所有书籍对象的选择框中选择1本书,当我“保存”这个时,会生成一本新的书本实例.此实例具有以下主键:例如Book_1_2.我知道如何保存这个,但我不知道如何更改管理站点来执行此操作.我需要两件事:

1)在“Add_model_name”附近添加一个“新实例”按钮

2)在选择框中传递包含所有model_name对象的表单,当我单击“保存”时,我想要检索一个对象,我可以使用该对象修改某些内容以将其另存为“新书”.

有任何想法吗?

更新我已经添加了“新”按钮,但就像我现在可以看到而不是url = add,我必须在管理员内部创建一个新的URL,如add_instance等.有人有任何文档吗?

问候,

海恩

让自己变得太难了.这样做:

class MyModelAdmin(admin.ModelAdmin):

# Other stuff here

save_as = True

现在,您可以打开您的图书条目,更改任何不同的内容并点击“另存为新”,它将创建一个包含该信息的新书,而不是覆盖另一个.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Django后台添加自定义按钮,需要进行以下步骤: 1. 创建一个 Django app,例如 app_name。 2. 在 app_name 下创建一个 admin.py 文件。 3. 导入 Djangoadmin 模块和你要编辑的模型。 4. 创建一个继承自 admin.ModelAdmin 的类,并在其中定义一个自定义方法,例如 my_custom_button。 5. 在该类中覆盖 change_list_template 属性,使其使用自定义的模板。 6. 创建一个自定义的 HTML 模板,其中包含一个表单和一个提交按钮。 7. 在自定义的模板中使用 {% url %} 模板标签来指定提交表单的 URL。 8. 在 app_name 下创建一个 urls.py 文件,并将自定义的 URL 映射到一个视图函数。 9. 在视图函数中实现你想要执行的操作,例如导出数据。 10. 在 app_name 的 urls.py 文件中添加一个 URL 映射,将其指向刚才创建的视图函数。 以下是一个示例代码: ```python # app_name/admin.py from django.contrib import admin from django.urls import reverse from django.utils.safestring import mark_safe from .models import MyModel class MyModelAdmin(admin.ModelAdmin): model = MyModel def my_custom_button(self, obj): url = reverse('admin:myapp_myview', args=[obj.pk]) return mark_safe(f'<a class="button" href="{url}">Custom Action</a>') my_custom_button.short_description = 'Custom Action' my_custom_button.allow_tags = True change_list_template = 'myapp/change_list.html' def get_urls(self): urls = super().get_urls() my_urls = [ path('myview/<int:pk>/', self.my_view, name='myapp_myview'), ] return my_urls + urls def my_view(self, request, pk): # Do something here return redirect(reverse('admin:myapp_mymodel_changelist')) admin.site.register(MyModel, MyModelAdmin) ``` ```html <!-- myapp/change_list.html --> {% extends "admin/change_list.html" %} {% block object-tools-items %} {{ block.super }} <li> <form method="post" action="{% url 'admin:myapp_myview' 0 %}"> {% csrf_token %} <input type="submit" value="Custom Action"> </form> </li> {% endblock %} ``` ```python # app_name/urls.py from django.urls import path from .views import my_view app_name = 'myapp' urlpatterns = [ path('myview/<int:pk>/', my_view, name='myview'), ] ``` 这样,你就可以在 Django 后台页面上看到一个自定义按钮,并且点击该按钮将会执行你定义的操作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值