Λύθηκε: django σχολιάσει το πεδίο ημερομηνίας ώρας σε χαρακτήρες

Το κύριο πρόβλημα είναι ότι το django σχολιάσει το πεδίο ημερομηνίας ώρας στο char δεν θα λειτουργήσει με ορισμένα πεδία ημερομηνίας. Για παράδειγμα, εάν έχετε ένα πεδίο που ονομάζεται "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 παρέχει έναν βολικό τύπο ημερομηνίας που μπορεί να χρησιμοποιηθεί για την αναπαράσταση ημερομηνιών και ωρών.

Για να δημιουργήσετε ένα αντικείμενο datetime, χρησιμοποιήστε τον κατασκευαστή datetime:

>>> από django.utils.datetime εισαγωγή ημερομηνίαώρα >>> d = datetime(2015, 11, 25) >>> d 2015-11-25 00:00:00

Παραδείγματα κωδικού ημερομηνίας

Ακολουθεί μια λίστα με παράδειγμα κώδικα ημερομηνίας στο Django.

από django.utils.datetime εισαγωγή ημερομηνίας ώρας από django.utils.translation εισαγωγή gettext_lazy ως _ από django.core.urlresolvers εισαγωγή αντίστροφη από django.db εισαγωγή μοντέλων κατηγορία User(models.Model): first_name = models.CharField(max_length=30, blank=True, nullable=False) last_name = models.CharField(max_length=30, blank=True, nullable=False) email = models.EmailField() def __str__(self): return self._first_name + ' ' + self._last_name + '@' + self._email

Σχετικές αναρτήσεις:

Αφήστε ένα σχόλιο