हल किया गया: django डेटाटाइम फ़ील्ड को चार में एनोटेट करें

मुख्य समस्या यह है कि django एनोटेट डेटाटाइम फ़ील्ड को चार कुछ डेटाटाइम फ़ील्ड के साथ काम नहीं करेगा। उदाहरण के लिए, यदि आपके पास "Created_at" नामक एक फ़ील्ड है और आप इसे CharField क्लास के साथ एनोटेट करने का प्रयास करते हैं, तो django आपको अपना डेटा सहेजने की अनुमति नहीं देगा।

field

I have a model with a datetime field and I want to annotate it to a charfield. I tried this:
<code>MyModel.objects.values('date').annotate(date_char=CharField())
</code>
but it gives me an error: <code>Cannot resolve keyword 'CharField' into field.</code>


A:

You can use <code>Func</code>:  https://docs.djangoproject.com/en/dev/ref/models/expressions/#func-expressions  and then use the <code>.format()</code> method on the resulting string to format it however you want (e.g., YYYY-MM-DD):   https://docs.python.org/2/library/string.html#formatstrings  .  Something like this should work:  
<code>from django.db import models     # for Func expression class   
from django import db           # for connection alias, used in Func expression class   

                                # create connection alias, used in Func expression class   

                                # (this is only necessary if you are using multiple databases)   

                                # replace 'default' with your database name if using multiple databases   

my_conn = db._connections['default']    

                                # create Func expression object that will convert date to string format YYYY-MM-DD    

my_func = models.Func(my_conn, function='TO_CHAR', template='%(function)s(%(expressions)s::DATE, 'YYYY-MM-DD')')    

                                # use my_func in query as follows:    

MyModelObjects = MyModelObjects .objects .values('date') .annotate(date_char=my_func)     
</code>

Django में डेटाटाइम

Django एक सुविधाजनक डेटाटाइम प्रकार प्रदान करता है जिसका उपयोग दिनांक और समय का प्रतिनिधित्व करने के लिए किया जा सकता है।

डेटाटाइम ऑब्जेक्ट बनाने के लिए, डेटाइम कंस्ट्रक्टर का उपयोग करें:

>>> django.utils.datetime आयात दिनांक समय से >>> d = दिनांक समय (2015, 11, 25) >>> d 2015-11-25 00:00:00

डेटाटाइम कोड के उदाहरण

निम्नलिखित Django में उदाहरण डेटाटाइम कोड की एक सूची है।

django.utils.datetime आयात से django.utils.translation आयात gettext_lazy as _ django.core.urlresolvers से django.db आयात मॉडल वर्ग उपयोगकर्ता (मॉडल। मॉडल) से रिवर्स आयात करें: first_name = मॉडल। चरफ़ील्ड (max_length = 30, रिक्त = सही, अशक्त = गलत) last_name = मॉडल। चरफ़ील्ड (अधिकतम_ लंबाई = 30, रिक्त = सही, अशक्त = गलत) ईमेल = मॉडल। + '@' + स्व._ईमेल

संबंधित पोस्ट:

एक टिप्पणी छोड़ दो