An warware: django annotate filin kwanan wata zuwa char

Babban matsalar ita ce filin django annotate datetime zuwa char ba zai yi aiki da wasu filayen kwanan wata ba. Misali, idan kuna da filin da ake kira "created_at" kuma kuna ƙoƙarin bayyana shi tare da ajin CharField, django ba zai ba ku damar adana bayanan ku ba.

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>

Kwanan wata a Django

Django yana ba da nau'in kwanan wata mai dacewa wanda za'a iya amfani dashi don wakiltar ranaku da lokuta.

Don ƙirƙirar abu na kwanan wata, yi amfani da maginin kwanan wata:

>>> daga django.utils.datetime shigo da kwanan wata >>> d = kwanan wata (2015, 11, 25) >>> d 2015-11-25 00:00:00

Misalai na lambar kwanan wata

Mai zuwa shine jerin misali lambar kwanan wata a Django.

daga django.utils.datetime shigo da kwanan wata daga django.utils.fassara shigo da gettext_lazy kamar _ daga django.core.urlresolvers shigo da baya daga django.db shigo da samfur aji Mai amfani(samfuran.Model): first_name = model.CharField(max_length=30, blank=Gaskiya, nullable=Karya) sunan karshe = model.CharField (max_length=30, blank=Gaskiya, nullable=Karya) imel = model.EmailField() def __str__(kai): mayar da kai._sunan farko + '' + kai._ sunan karshe + '@' + kai._email

Shafi posts:

Leave a Comment