2014-07-03 6 views
5

में लौटने कोई क्वेरीसमूह मैं एक DateTimeField जो डीबी में DATETIME है के मूल्यों प्राप्त करने के लिए एक क्वेरीसमूह बनाने के लिए कोशिश कर रहा हूँ।DateTimeField Django

models.py में वर्ग:

class ChangeMetrics(models.Model): 
    id = models.IntegerField(primary_key=True) 
    file_id = models.ForeignKey(File, db_column = 'file_id') 
    version_id = models.ForeignKey(Version, db_column = 'version_id') 
    function_id = models.ForeignKey(Function, blank=True, db_column = 'function_id') 
    date = models.DateTimeField(blank=True, null=True) 
    user = models.TextField(blank=True) 
    changed = models.IntegerField(blank=True, null=True) 

डीबी में क्षेत्र:

date DATETIME 

tuples डेटाबेस में भर जाती है और डीबी पर सीधे चल एसक्यूएल प्रश्नों पूरी तरह से काम कर रहा है।

इस क्वेरीसमूह मैं वर्तमान में Django में उपयोग कर रहा हूँ है:

queryset = ChangeMetrics.objects.filter(~Q(changed=None), ~Q(date=None), ~Q(version_id=None)) 

मैं एक कच्चे क्वेरी और भी बाहर निकालने के (का उपयोग करता है क्वेरी के एक संस्करण की कोशिश की है), लेकिन यह अभी भी तिथि के लिए कोई नहीं देता है।

मैं पाश के लिए एक के माध्यम से क्वेरीसमूह में प्रविष्टियों तक पहुँचने कर रहा हूँ और बस पाश के लिए अंदर entry.date के माध्यम से तारीख तक पहुँचने।

संपादित करें: Django संस्करण 1.6.5 मैंने Django खोल के माध्यम से मूल्यों को प्राप्त करने की भी कोशिश की है, सफलता के लिए।

क्या गलत हो सकता है पर कोई भी विचार?

+0

क्या होता है यदि आप केवल अपनी नल तिथियों के लिए पूछताछ करते हैं? –

+0

दुर्भाग्य से, वही परिणाम। –

उत्तर

0

आप इस समाधान की कोशिश कर सकते हैं करें:

queryset = list(ChangeMetrics.objects.filter(changed__isnull=False, date__isnull=False, version_id__isnull=False)) 
+0

मुझे आपकी क्वेरी के साथ एक ही परिणाम मिलते हैं। मैं जोड़ सकता हूं कि क्वेरी डीबी के सही tuples देता है, यानी उन निर्दिष्ट फ़ील्ड में शून्य नहीं है। यह केवल इतना है कि यह किसी कारण से तारीख का मूल्य नहीं लाता है। –

+0

कृपया अपना पूरा मॉडल दिखाएं। मेरा मतलब है कि 'चेंजमैट्रिक्स' वर्ग – Silwest

+0

अपने प्रश्न में उपर्युक्त टिप्पणी जोड़ें कृपया @ user3063424 – ruddra

0

संपादित करें: अपने फ़ोल्डर से बाहर databse ले जाते हैं, तो python manage.py syncdb चलाने के लिए और जाँच अपने डेटाबेस मॉडल के अनुसार सही ढंग से बनाई गई है, तो की कोशिश करो।

काम करता है नहीं: हो सकता है कि आप इस के साथ की कोशिश कर सकते (मैं अगर यह काम करता है पता नहीं है, मैं इसे अब कोशिश नहीं कर सकते हैं):

queryset = ChangeMetrics.objects.filter(changed!=None, date!=None, version_id!=None) 
+0

कोशिश की। मुझे नहीं लगता कि क्वेरी के साथ कोई समस्या है ... अभी मैं सोच रहा हूं कि मॉडल और डेटाबेस के बीच जोड़ने में कुछ गड़बड़ है। –

+0

संपादन देखें, यह पता लगाने का एक तरीका हो सकता है कि मॉडल ठीक काम कर रहे हैं या नहीं –

+0

ने कोशिश की। और एक ताजा मॉडल फ़ाइल उत्पन्न करने के लिए एक नया inspectdb> models.py चलाया, अभी भी कोई नहीं देता है। मैं अब डीबी की तालिका पीढ़ियों की जांच कर रहा हूं यह देखने के लिए कि क्या त्रुटि हो सकती है। –

-1

मुझे लगता है कि आप उत्पन्न (Django आदेश विस्थापित) मैक पर अपने डेटाबेस स्कीमा। स्कीमा को हटाने और विंडोज मशीन से फिर से माइग्रेट करने का प्रयास करें।

3

यकीन नहीं करता है, तो आप यह पता लगा करने में सक्षम थे, लेकिन मैं सिर्फ इस समस्या थी और इसे ठीक करने में सक्षम था।

तो, Django माइग्रेशन दिनांक (6) के रूप में डीबी में स्तंभ निर्माण कर रहे थे datetime के बजाय। यह Django मॉडल डेटाटाइम ऑब्जेक्ट को तुरंत चालू करने में विफल रहा था।

ALTER TABLE `my_table` 
MODIFY COLUMN `created` datetime NOT NULL 

यदि मेरे मुद्दे को ठीक किया गया तो इसे चलाने के बाद। शायद आपके मामले में आप डेटाटाइम (6) के बजाय संशोधित करने का प्रयास कर सकते हैं।

+0

मेरे मामले में कॉलम सिर्फ 'डेटाटाइम' था, लेकिन फिर भी इस समस्या को हल किया गया। धन्यवाद! – Tzach

2

हमारे पास स्थानीय वातावरण (मैक ओएस एक्स) से ऐप इंजन तक कोड दबाते समय भी यही समस्या पॉपअप थी। अलेक्जेंडर जैसे क्षेत्रों को बदलने के दौरान DATETIME (6) के बजाय DATETIME होने का उल्लेख किया गया, उन्हें दिखाई देने लगे, हमने माइक्रोसेकंड खो दिए। यह महसूस कर लिया कि स्थानीय पर्यावरण में हम MySQLdb 1.2.5 चला रहे थे, लेकिन ऐप इंजन पर तैनाती करते समय भी, हमने MySQLdb के संस्करण के रूप में "नवीनतम" निर्दिष्ट किया था, यह केवल 1.2.4b4 खींच रहा था, हार्ड-कोडिंग 1.2.5 मुद्दा तय किया।

+1

मैं इस मुद्दे में एक ही स्थानीय/उत्पादन वातावरण के साथ भाग गया। आपका फिक्स एक आकर्षण की तरह काम करता था। पता नहीं था कि ऐप इंजन 1.2.5 के बजाय 1.2.4b4 खींच रहा था। बहुत बहुत धन्यवाद @ jturmel! – taelimoh

0

यह समस्या MySQL-python Django या माइग्रेशन प्रणाली द्वारा नहीं के एक पुराने संस्करण के कारण होता है।

mysqlclient का उपयोग करना (जो MySQL-python का एक अद्यतन कांटा है) इस समस्या को हल करता है।

संबंधित मुद्दे