क्या Django व्यवस्थापक साइट कस्टम दिनांक सीमा द्वारा प्रविष्टियों का चयन कर सकती है, यानी AdminDateWidget
के साथ दो का उपयोग कर सकते हैं? मुझे पता है कि date_hierarchy
और list_filter
गुण हैं, लेकिन बहुत सी डीबी प्रविष्टियां होने पर वे बहुत उपयोगी नहीं लगती हैं और आपको केवल date__gte
और date__lte
क्वेरी द्वारा आइटम फ़िल्टर करने की आवश्यकता है।Django व्यवस्थापक में कस्टम दिनांक सीमा द्वारा फ़िल्टरिंग
उत्तर
नोट: मैंने 200 9 में यह जवाब लिखा था, जब आवश्यक कार्यक्षमता Django में सार्वजनिक एपीआई के रूप में उपलब्ध नहीं थी। Django 1.4+ के लिए, अन्य उत्तरों देखें।
यह कार्यक्षमता तब तक प्रदान नहीं की जाती है जब तक मुझे पता है, लेकिन आप इसे स्वयं बना सकते हैं।
सबसे पहले, आप यूआरएल में जीईटी तर्क के रूप में date__gte
और date__lte
का उपयोग करके आइटम फ़िल्टर कर सकते हैं।
उदाहरण के लिए
/admin/myapp/bar/?date__gte=2009-5-1&date__lt=2009-8-1
यदि आप, आप प्रारंभ और समाप्ति दिनांक के लिए विजेट जोड़ सकते हैं admin/change_list.html टेम्पलेट फ़ाइल को ओवरराइड 2009
तो मई, जून या जुलाई में तारीखों के साथ सभी बार वस्तुओं को प्रदर्शित करेगा , जो आवश्यक यूआरएल पर नेविगेट करता है। एक और तो सवाल यह है, जो मुझे तर्क के रूप में क्वेरीसमूह फिल्टर पैरामीटर का उपयोग कर के बारे में पढ़ाया जाता है करने के लिए Daniel's answer को
Hat टिप।
DateRangeFilter()
वर्ग https://github.com/runekaagaard/django-admin-filtrate में पाया करता है सिर्फ इतना है कि :)
Django 1.4 –
के लिए काम नहीं कर रहा है 1.4 पर परीक्षण नहीं किया गया है तो शायद नहीं। मुझे लगता है कि 1.4 में एक नया व्यवस्थापक फ़िल्टर एपीआई है जो चीज़ों को हिला देगा। –
मैं यह कुछ इस तरह लागू करने समाप्त हो गया:
# admin.py
class FooAdmin(MyModelAdmin):
def changelist_view(self, request, extra_context=None):
extra_context = extra_context or {}
try:
extra_context['trade_date_gte'] = request.GET['date__gte']
except:
pass
try:
extra_context['trade_date_lte'] = request.GET['date__lte']
except:
pass
return super(FileNoteAdmin, self).changelist_view(request, extra_context)
# change_list.html
{% extends "admin/admin/change_list.html" %}
{% load i18n admin_static admin_list %}
{% load url from future %}
{% load admin_urls %}
{% block filters %}
{% if cl.has_filters %}
<div id="changelist-filter">
<h2>{% trans 'Filter' %} </h2>
<h3>By trade date</h3>
<link href="/media/css/ui-lightness/jquery-ui-1.8.19.custom.css" rel="stylesheet" type="text/css"/>
<script src="/media/js/jquery/jquery-min.js"></script>
<script src="/media/js/jquery/jquery-ui-1.8.19.custom.min.js"></script>
<script>
$(function() {
$("#trade_date_gte").datepicker({ dateFormat: 'yy-mm-dd'{% if trade_date_gte %}, defaultDate: '{{ trade_date_gte }}'{% endif %} });
$("#trade_date_lte").datepicker({ dateFormat: 'yy-mm-dd'{% if trade_date_lte %}, defaultDate: '{{ trade_date_lte }}'{% endif %} });
});
function applyDateFilters() {
qs = location.search;
if (qs.charAt(0) == '?') qs = qs.substring(1);
var qsComponents = qs.split(/[&;]/g);
new_qs = [];
for (var index = 0; index < qsComponents.length; index ++){
var keyValuePair = qsComponents[index].split('=');
var key = keyValuePair[0];
var value = keyValuePair[1];
if(key == 'trade_date__gte' || key == 'trade_date__lte' || key == '') {
continue;
} else {
new_qs[index] = key + '=' + value;
}
}
if($("#trade_date_gte").val() != '') {
new_qs[new_qs.length] = 'trade_date__gte=' + $("#trade_date_gte").val();
}
if($("#trade_date_lte").val() != '') {
new_qs[new_qs.length] = 'trade_date__lte=' + $("#trade_date_lte").val();
}
window.location = '?' + new_qs.join("&");
}
</script>
<p>
From: <br /><input type="text" id="trade_date_gte" value="{{ trade_date_gte|default:'' }}" size="10"><br />
To: <br /><input type="text" id="trade_date_lte" value="{{ trade_date_lte|default:'' }}" size="10">
</p>
<ul>
<li><a href="#" onclick="javascript:applyDateFilters();">Apply date filters</a></li>
</ul>
{% for spec in cl.filter_specs %}{% admin_list_filter cl spec %}{% endfor %}
</div>
{% endif %}
{% endblock %}
तारीख स्तंभ फ़िल्टर किए जा रहे "trade_date" है।
अब मैं आपके फ़िल्टर (थोड़ा अनुकूलित) का उपयोग करके समाप्त हुआ - django-admin-filtrate के संदर्भ में अभी भी कुछ भी नहीं है। अभी भी 1.4 समर्थन – kosta5
django 1.4 में, आप उपयोगकर्ता list_filter कर सकते हैं। प्रयास करें:
from django.contrib.admin import DateFieldListFilter
class PersonAdmin(ModelAdmin):
list_filter = (
('date_field_name', DateFieldListFilter),
)
यह कुछ निर्मित पर्वतमाला दे देंगे, लेकिन अगर आप की तरह यूआरएल में दिनांक सीमा डाल दिया, यह काम करेगा:
?date__gte=2009-5-1&date__lt=2009-8-1
आप एक दिनांक पिकर (jQuery) की तरह की जरूरत है , आपको DateFieldListFilter का विस्तार करने की आवश्यकता है। मैंने django-admin-filtrate पर एक पैच भेजा, तो, जल्द ही वहां जांचें।
अब मानक Django API का उपयोग करके कस्टम व्यवस्थापक फ़िल्टर को आसानी से कार्यान्वित करना संभव है। डॉक्स दिन कि list_filter
में, अब आप जोड़ सकते हैं:
एक वर्ग django.contrib.admin.SimpleListFilter है, जो आपको और PARAMETER_NAME और लुकअप और क्वेरीसमूह तरीकों
ओवरराइड करने के लिए जिम्मेदार बताते हैं शीर्षक प्रदान करने की आवश्यकता से इनहेरिट
और वे आगे demo (दूसरी बुलेट तक स्क्रॉल) पर जाएं। मैंने इसे फ़िल्टर जोड़ने के लिए स्वयं का उपयोग किया है जिसका ऑब्जेक्ट्स के अंतर्निहित संबंध मॉडल विशेषताओं के माध्यम से नहीं हैं, लेकिन उन पर विधियों के परिणाम, पारंपरिक फ़िल्टर जो कुछ नहीं देते हैं।
डाउन-वोट क्यों? – nemesisfixx
वास्तव में, बहुत उपयोगी, टीएक्स – ptim
आप इसे अद्यतित एक का उपयोग कर सकते हैं: https://github.com/tzulberti/django-datefilterspec।
परियोजना छोड़ दी गई है – shredding
- 1. Django व्यवस्थापक में यूरोपीय दिनांक इनपुट
- 2. django व्यवस्थापक इनलाइन क्वेरीसेट सीमा
- 3. Django व्यवस्थापक - मैं कस्टम व्यवस्थापक फॉर्म
- 4. Django व्यवस्थापक कस्टम लोड क्रम
- 5. दिनांक सीमा में अंतराल द्वारा MySQL समूह
- 6. Django व्यवस्थापक
- 7. Django व्यवस्थापक, कस्टम त्रुटि संदेश?
- 8. Django व्यवस्थापक क्रियाओं में कस्टम त्रुटि संदेश
- 9. django में कस्टम उपयोगकर्ता मॉडल व्यवस्थापक
- 10. छनन Django व्यवस्थापक अशक्त/द्वारा अशक्त
- 11. Django पर Django व्यवस्थापक में कस्टम फ़िल्टर 1.3 या
- 12. Django - संबंधित वस्तुओं पर फ़िल्टरिंग
- 13. Django व्यवस्थापक
- 14. Django:% फ़िल्टर% द्वारा फ़िल्टरिंग की अनुमति नहीं है
- 15. django व्यवस्थापक
- 16. Django व्यवस्थापक वापसी कस्टम त्रुटि संदेश
- 17. सीमा विदेशी कुंजी व्यवस्थापक
- 18. Django व्यवस्थापक
- 19. दिनांक सीमा
- 20. Django व्यवस्थापक
- 21. मेरे Django एप में Django व्यवस्थापक
- 22. दिनांक सीमा
- 23. Django व्यवस्थापक
- 24. दिनांक सीमा
- 25. दिनांक सीमा
- 26. दिनांक सीमा
- 27. Django फ़िल्टरिंग MySQL चेतावनी
- 28. Django टेबल्स - कॉलम फ़िल्टरिंग
- 29. Django: * केवल * वर्ष मूल्य द्वारा डेटाटाइम फ़ील्ड फ़िल्टरिंग?
- 30. कस्टम Django मॉडल प्रमाणीकरण
धन्यवाद बहुत, बहुत उपयोगी सुविधा। –