我想创建一个过滤器以获得一些值范围。在那里我希望得到2个数字到parameter_name
,因为我添加了2个数字字段。像贝娄图像。
如果我只使用一个字段,则可以获得该字段的值。作为value = self.value()
<input type="number" step="0.1" max="0.9" min="0.1" id="IsWithinRange" name="IsWithinRange">
但我需要这两个值,所以添加了另一个字段,然后它们的值可以得到。 self.value()
始终为非。
现在我无法弄清楚如何将此值传递给我的过滤器。任何人都可以指引我走正确的道路。
答案 0 :(得分:1)
这可能不是确切的答案。但使用它你可能能够满足要求 ※如果有多个输入字段,Django过滤器将无法正常工作。因此,每个过滤器必须使用一个输入字段 (使用Jquery滑块选择范围而不是使用两个输入字段)
Python类
class IsWithinRangeFilter(admin.SimpleListFilter):
title = 'Title'
parameter_name = 'scoreRange'
template = '[path]/input_filter.html'
def lookups(self, request, model_admin):
return (
('Yes', 'Yes'),
)
def queryset(self, request, queryset):
value = self.value()
try:
if value:
#do whatever
except Exception as e:
logger.info('#####ERROR{}' .format(e))
return queryset
调用过滤器类
list_filter = (IsWithinRangeFilter,)
input_filter.html
{% load i18n %}
<link rel="stylesheet" href="http://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" />
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script type="text/javascript" src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
var lowerRange = 5;
var upperRange = 8;
$( function() {
$( "#slider-range" ).slider({
range: true,
min: 0,
max: 10,
values: [ lowerRange, upperRange ],
slide: function( event, ui ) {
if(ui.values[ 0 ] === ui.values[ 1 ])
{
return false;
}
$( "#scoreRange" ).val( ui.values[ 0 ]/10 + " - " + ui.values[ 1 ]/10 );
}
});
$( "#scoreRange" ).val( $( "#slider-range" ).slider( "values", 0 ) / 10 +
" - " + $( "#slider-range" ).slider( "values", 1 ) / 10 );
} );
</script>
{% block content %}
<h3>{% Any Title %}</h3>
<ul>
<li>
<form>
<p>
<label >Any Description</label>
<div id="slider-range"></div>
<label style="font-weight: bold;">Filter:</label><input type="submit" id="scoreRange" name="scoreRange" style="margin:5px; text-align:center; background-color:#79aec8; cursor:pointer; border:0; color:#f7f5f3; font-weight:bold;">
</p>
</form>
</li>
</ul>
{% endblock %}
&#13;
希望这会有所帮助!!!