تكمن المشكلة الرئيسية في أن حقل 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 نوع تاريخ ووقت مناسب يمكن استخدامه لتمثيل التواريخ والأوقات.
لإنشاء كائن تاريخ / وقت ، استخدم مُنشئ التاريخ والوقت:
>>> من django.utils.datetime تاريخ الاستيراد والوقت >>> d = datetime (2015 ، 11 ، 25) >>> d 2015-11-25 00:00:00
أمثلة على كود التاريخ والوقت
فيما يلي قائمة بأمثلة على كود التاريخ والوقت في Django.
من django. فارغ = صحيح ، فارغ = خطأ) اسم_الأخير = نماذج.شار فيلد (max_length = 30 ، فارغ = صحيح ، فارغ = خطأ) البريد الإلكتروني = النماذج. + '@' + self._email