Django之编辑时根据条件跳转回原页面

在要跳转的编辑页面:

#首先获取当期的url:
curr_url = self.request.GET.urlencode()

#创建一个QueryDict对象:
params = QueryDict(mutable=True)

#将当前的url赋值给一个新的参数:
params['_list_filter'] = curr_url

#处理url:
return mark_safe('<a href=%s?%s>编辑</a>' % (self.get_change_url(obj.id), params.urlencode()))

在处理url的视图中:

#获取url参数:
query_str = request.GET.get('_list_filter')

#跳转时拼接要跳转的url:
url = "%s?%s"%(self.get_list_url(),query_str)
return redirect(url)

不懂得可以参考:

https://github.com/QuincyC379/Djet

PS:根据Django源码写的快速增删改查的组件,希望对各位有点帮助!

Django Admin 中实现一对多关系的页面跳转,通常是为了在管理界面中方便地导航到关联模型的列表或添加/编辑页面。以下是一个完整的示例,展示如何通过自定义 Admin 模板和方法来实现这种跳转。 ### 示例:实现一对多关系的页面跳转 假设我们有两个模型 `Author`(作者) 和 `Book`(书籍),其中一位作者可以写多本书,即 `Author` 是“一”的一方,`Book` 是“多”的一方。 #### 1. 定义模型 ```python # models.py from django.db import models class Author(models.Model): name = models.CharField(max_length=100) def __str__(self): return self.name class Book(models.Model): title = models.CharField(max_length=200) author = models.ForeignKey(Author, on_delete=models.CASCADE) def __str__(self): return self.title ``` #### 2. 注册模型到 Admin ```python # admin.py from django.contrib import admin from .models import Author, Book @admin.register(Book) class BookAdmin(admin.ModelAdmin): list_display = ('title', 'author') @admin.register(Author) class AuthorAdmin(admin.ModelAdmin): list_display = ('name', 'book_count', 'view_books_link') def book_count(self, obj): return obj.book_set.count() book_count.short_description = '书籍数量' def view_books_link(self, obj): count = obj.book_set.count() if count > 0: url = f"/admin/myapp/book/?author__id__exact={obj.id}" return format_html('<a href="{}">查看书籍</a>', url) else: return "无书籍" view_books_link.short_description = '操作' view_books_link.allow_tags = True ``` 在上面的代码中: - `book_count` 方法用于显示该作者的书籍数量。 - `view_books_link` 方法生成一个链接,跳转到筛选后的书籍列表页面,显示与当前作者相关联的所有书籍[^3]。 #### 3. 自定义 Admin 模板(可选) 如果你希望在点击“查看书籍”后跳转到一个更定制化的页面,而不是默认的过滤页面,你可以创建自定义模板并覆盖默认的 Admin 模板。 例如,在 `templates/admin/myapp/author/change_list.html` 中扩展默认模板: ```html {% extends "admin/change_list.html" %} {% block object-tools %} <div class="object-tools"> <a href="/admin/myapp/book/add/" class="addlink">添加新书籍</a> </div> {% endblock %} ``` 这样可以在作者管理页面中添加一个“添加新书籍”的按钮,直接跳转到书籍的添加页面[^1]。 --- ### 补充说明 - 使用 `format_html()` 来安全地渲染 HTML 链接。 - URL `/admin/myapp/book/?author__id__exact={obj.id}` 是 Django Admin 的内置查询语法,表示根据外键字段进行过滤。 - 如果你使用的是 Django 2.0 及以上版本,`allow_tags` 属性已被弃用,推荐使用 `mark_safe()` 来标记字符串为安全 HTML。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值