如何使用url参数changelist_filters分配默认值?

时间:2018-08-04 12:16:44

标签: django django-models django-admin

在Django 2.0.6中,

在Django管理页面中添加数据时,我想分配默认的模型字段值。

这是我的代码。

models.py

<!DOCTYPE html> <html> <head> <title>Routing</title> </head> <body ng-app="myApp"> <a href="#/login">Login</a> <a href="#/register">Register</a> <div ng-view></div> </body> <script src="angular-min.js" type="text/javascript"></script> <script src="angular-route.js" type="text/javascript"></script> <script> var app = angular.module("myApp", ["ngRoute"]); app.config(function($routeProvider) { $routeProvider .when("/login", { templateUrl : "login.html" }) .when("/register", { templateUrl : "register.html" }) }); </script> </html>

URL(在管理员中创建页面)

class a_model(models.Model): a_field = models.foreignKey(~~) ~~~~

我想在上面的URL中获取586632,并将默认值分配给该页面中的a_field。

我在models.py中尝试这种方式

http://127.0.0.1:8000/admin/~~~/a_model/add/?_changelist_filters=a_field__exact%3D586632 class a_model(models.Model): @staticmethod def default_id(request): return 586632

然后,我看到默认值为586632,就像我期望的那样。

我想知道如何获取url参数值以在模型类中分配默认值。

帮帮我..

1 个答案:

答案 0 :(得分:0)

我正在与django admin合作;在对象modeladmin内部,我以这种方式覆盖了 get_changeform_initial_data 函数:

def get_changeform_initial_data(self, request):
    from django.http import QueryDict
    if request.GET.__contains__('_changelist_filters'):
        params = QueryDict(request.GET['_changelist_filters'])
        if 'acto__exact' in params:
            return {'acto' : params['acto__exact'] 
                    }

因此,如果在url中将它指定为changelist_filter,那么我将获得“ acto”字段的初始值。