2012-03-28 12 views
10

मैं एक मॉडल है:Django यूनिकोड को मजबूर: जरूरत स्ट्रिंग या बफर, datetime.date पाया

class MyModel(models.Model): 
    id = models.IntegerField(primary_key=True) 
    recorded_on = models.DateField() 
    precipitation = models.FloatField(null=True, blank=True) 
मेरे विचार में

मैं एक प्रश्न इस प्रकार है:

import datetime 

def my_view(request): 
    ... 
    format = '%Y-%m-%d' 
    sd = datetime.datetime.strptime(startdate, format) 
    ed = datetime.datetime.strptime(enddate, format) 
    queryset = MyModel.objects.filter((recorded_on__range = (sd, ed))) 
    ... 

लेकिन जब भी मैं कोशिश करते हैं और क्वेरीसमूह के साथ कुछ भी (जैसे json डंप, टेम्पलेट में प्रदर्शन) करते हैं, मैं निम्नलिखित त्रुटि मिलती है:

coercing to Unicode: need string or buffer, datetime.date found 

मैं जानता हूँ कि dea लिए एक आसान तरीका होना चाहिए मैं इसके साथ, लेकिन मुझे अभी तक यह नहीं मिला है।

किसी भी मदद की बहुत सराहना की जाएगी।

संपादित करें:

डेटा का एक उदाहरण:

+----+-------------+---------------+ 
| id | recorded_on | precipitation | 
+----+-------------+---------------+ 
| 24 | 1987-07-02 |   20.7 | 
| 33 | 1987-07-11 |   0.4 | 
+----+-------------+---------------+ 
+1

कृपया वास्तविक ट्रेसबैक दिखाएं। कौन सी रेखा त्रुटि पैदा कर रही है? –

+0

क्या आप 'record'on' को' + 'ऑपरेटर का उपयोग करके यूनिकोड स्ट्रिंग के साथ 'record_on' को संयोजित करने की कोशिश कर रहे किसी भी बदलाव से हैं? यदि ऐसा है, तो ऐसा करने का तरीका 'u "एक स्ट्रिंग है" + str (obj.recorded_on) ' – vartec

+0

मेरा ट्रेसबैक पोस्ट से कुछ अलग है, क्योंकि मैंने इसे सरल बना दिया है - मुझे संदेह है कि यह एक सामान्य समस्या है। लेकिन django के बारे में शिकायत करने वाले मेरे कोड की रेखा Views.py लाइन है जो टेम्पलेट को प्रस्तुत करती है। यहां लिंक करें: http://dpaste.com/722851/ मैंने खोल में क्वेरी की भी कोशिश की और क्वेरीसेट को प्रिंट करने या फिर पुन: सक्रिय करने की कोशिश करने से एक ही त्रुटि मिलती है। –

उत्तर

22

पूर्ण कोड नहीं दिखाया गया है, लेकिन मुझे लगता है समस्या अपने मॉडल के __unicode__ विधि के साथ है। इसे वास्तविक यूनिकोड स्ट्रिंग को वापस करने की आवश्यकता है - यदि आप केवल return self.recorded_on कर रहे हैं जो दिए गए त्रुटि से असफल हो जाएंगे। return unicode(self.recorded_on) जैसे कुछ कोशिश करें, या strftime का उपयोग अपनी वांछित दिनांक स्वरूपण में कनवर्ट करने के लिए करें, उदाहरण के लिए self.recorded_on.strftime('%Y-%m-%d')

+1

बिल्कुल सही। धन्यवाद। मुझे वास्तव में पता नहीं था कि मॉडल के साथ समस्या हो सकती है! –

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