La xaliyay: django annotate taariikhda goobta si char

Dhibka ugu weyni waa in django annotate datetime field to char aysan la shaqayn doonin waqtiyada taariikhda qaarkood. Tusaale ahaan, haddii aad leedahay goob la yiraahdo "created_at" oo aad isku daydo inaad ku qeexdo fasalka CharField, django kuma oggolaan doono inaad kaydiso xogtaada.

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>

Wakhtiga taariikhda ee Django

Django waxa ay bixisa nooc taariikhi ah oo ku haboon oo loo isticmaali karo in lagu matalo taariikhaha iyo wakhtiyada.

Si aad u abuurto walax taariikhi ah, adeegso dhisaha wakhtiga taariikhda:

>>> laga bilaabo django.utils.datetime soo dejinta taariikhda taariikhda >>> d = taariikhda taariikhda (2015, 11, 25) >>> d 2015-11-25 00:00:00

Tusaalooyinka koodka taariikhda taariikhda

Kuwa soo socdaa waa liiska tusaalaha koodka wakhtiga taariikhda ee Django.

laga soo bilaabo django.utils.datetime soo dejinta datetime from django.utils.translation ka soo dejinta gettext_lazy sida _ ka django.core.urlresolvers ka soo dejiso django.db moodooyinka soo dejinta fasalka User(models.Model): first_name = model.CharField(max_length=30, blank=Run, nullable=Been) magaca dambe = model.CharField(max_length=30, blank=Run, nullable=Been) iimayl = model. + '@' + nafta._email

Related posts:

Leave a Comment