如何以 (mm-dd-yyyy) 格式在 Django 模型中创建日期字段
How to create datefield in django models in the format (mm-dd-yyyy)
我正在从不同的网站抓取日期,它的格式是 mm-dd-yyyy
即。 10-28-2021
。现在,我将其存储为字符串。
在 Django 模型中,我将字段创建为:
issued = models.CharField(max_length=16)
这会将日期存储为字符串。
但我想转换成日期字段。
当我尝试时,
issued = models.DateField()
我无法在此字段中存储日期。
如何在上面的字段中添加特定格式的日期?
解决后,
追溯是:
Environment:
Request Method: GET
Request URL: http://localhost:8000/
Django Version: 3.1.5
Python Version: 3.8.5
Installed Applications:
['grappelli',
'filebrowser',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'dibbs_spider',
'userapp']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Template error:
In template C:\Users\admin\PycharmProjects\spider\templates\Partsbase-data-table (1).html, error at line 295
month must be in 1..12
285 : <th>Issued</th>
286 : <th>Return by</th>
287 : <!-- <th>Est. Value</th>-->
288 : <!-- <th>Days</th>-->
289 : <!-- <th>Status</th>-->
290 : <!-- <th>Match Details</th>-->
291 : <th>Download</th>
292 : </tr>
293 : </thead>
294 : <tbody>
295 : {% for i in dibbs %}
296 : <tr>
297 : <!-- <td data-label="#">{{ i.hash}}</td> -->
298 : <td data-label="NSN/Part Number">{{ i.nsn }}</td>
299 : <td data-label="Nomenclature">{{ i.nomenclature }}</td>
300 : <td data-label="Technical Documents">{{ i.technical_documents }}</td>
301 : <td data-label="solicitation">{{ i.solicitation }}</td>
302 : <td data-label="status">{{ i.status }}</td>
303 : <td data-label="purchase_request">{{ i.purchase_request }}</td>
304 : <td data-label="issued">{{ i.issued|date:"m-d-Y" }}</td>
305 : <td data-label="Return by">{{ i.return_by|date:"m-d-Y" }}</td>
Traceback (most recent call last):
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\admin\PycharmProjects\spider\dibbs_spider\views.py", line 25, in bids
return render(request,'Partsbase-data-table (1).html',context)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\shortcuts.py", line 19, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\template\loader.py", line 62, in render_to_string
return template.render(context, request)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\template\backends\django.py", line 61, in render
return self.template.render(context)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\template\base.py", line 170, in render
return self._render(context)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\template\base.py", line 162, in _render
return self.nodelist.render(context)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\template\base.py", line 938, in render
bit = node.render_annotated(context)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\template\base.py", line 905, in render_annotated
return self.render(context)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\template\defaulttags.py", line 168, in render
len_values = len(values)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\core\paginator.py", line 143, in __len__
return len(self.object_list)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\models\query.py", line 269, in __len__
self._fetch_all()
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\models\query.py", line 1308, in _fetch_all
self._result_cache = list(self._iterable_class(self))
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\models\query.py", line 53, in __iter__
results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\models\sql\compiler.py", line 1156, in execute_sql
cursor.execute(sql, params)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\utils.py", line 98, in execute
return super().execute(sql, params)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\utils.py", line 66, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\utils.py", line 75, in _execute_with_wrappers
return executor(sql, params, many, context)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\sqlite3\base.py", line 413, in execute
return Database.Cursor.execute(self, query, params)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\sqlite3\dbapi2.py", line 64, in convert_date
return datetime.date(*map(int, val.split(b"-")))
Exception Type: ValueError at /
Exception Value: month must be in 1..12
您可以像这样更改 settings.py
中日期的输入格式:
DATE_INPUT_FORMATS = ['%m-%d-%Y']
这里是 Django 官方文档:link
使用strptime将字符串转换为日期时间对象,
from datetime import datetime
date_time_str = '10-28-2021'
date1 = datetime.strptime(date_time_str, "%m-%d-%Y")
print(date1)
编辑1:
如果你没有时间想要它,
from datetime import datetime
date_time_str = '10-28-2021'
date1 = datetime.strptime(date_time_str, "%m-%d-%Y").date()
print(type(date1))
我正在从不同的网站抓取日期,它的格式是 mm-dd-yyyy
即。 10-28-2021
。现在,我将其存储为字符串。
在 Django 模型中,我将字段创建为:
issued = models.CharField(max_length=16)
这会将日期存储为字符串。
但我想转换成日期字段。
当我尝试时,
issued = models.DateField()
我无法在此字段中存储日期。
如何在上面的字段中添加特定格式的日期?
解决后,
追溯是:
Environment:
Request Method: GET
Request URL: http://localhost:8000/
Django Version: 3.1.5
Python Version: 3.8.5
Installed Applications:
['grappelli',
'filebrowser',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'dibbs_spider',
'userapp']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Template error:
In template C:\Users\admin\PycharmProjects\spider\templates\Partsbase-data-table (1).html, error at line 295
month must be in 1..12
285 : <th>Issued</th>
286 : <th>Return by</th>
287 : <!-- <th>Est. Value</th>-->
288 : <!-- <th>Days</th>-->
289 : <!-- <th>Status</th>-->
290 : <!-- <th>Match Details</th>-->
291 : <th>Download</th>
292 : </tr>
293 : </thead>
294 : <tbody>
295 : {% for i in dibbs %}
296 : <tr>
297 : <!-- <td data-label="#">{{ i.hash}}</td> -->
298 : <td data-label="NSN/Part Number">{{ i.nsn }}</td>
299 : <td data-label="Nomenclature">{{ i.nomenclature }}</td>
300 : <td data-label="Technical Documents">{{ i.technical_documents }}</td>
301 : <td data-label="solicitation">{{ i.solicitation }}</td>
302 : <td data-label="status">{{ i.status }}</td>
303 : <td data-label="purchase_request">{{ i.purchase_request }}</td>
304 : <td data-label="issued">{{ i.issued|date:"m-d-Y" }}</td>
305 : <td data-label="Return by">{{ i.return_by|date:"m-d-Y" }}</td>
Traceback (most recent call last):
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\admin\PycharmProjects\spider\dibbs_spider\views.py", line 25, in bids
return render(request,'Partsbase-data-table (1).html',context)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\shortcuts.py", line 19, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\template\loader.py", line 62, in render_to_string
return template.render(context, request)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\template\backends\django.py", line 61, in render
return self.template.render(context)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\template\base.py", line 170, in render
return self._render(context)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\template\base.py", line 162, in _render
return self.nodelist.render(context)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\template\base.py", line 938, in render
bit = node.render_annotated(context)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\template\base.py", line 905, in render_annotated
return self.render(context)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\template\defaulttags.py", line 168, in render
len_values = len(values)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\core\paginator.py", line 143, in __len__
return len(self.object_list)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\models\query.py", line 269, in __len__
self._fetch_all()
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\models\query.py", line 1308, in _fetch_all
self._result_cache = list(self._iterable_class(self))
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\models\query.py", line 53, in __iter__
results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\models\sql\compiler.py", line 1156, in execute_sql
cursor.execute(sql, params)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\utils.py", line 98, in execute
return super().execute(sql, params)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\utils.py", line 66, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\utils.py", line 75, in _execute_with_wrappers
return executor(sql, params, many, context)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\sqlite3\base.py", line 413, in execute
return Database.Cursor.execute(self, query, params)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\sqlite3\dbapi2.py", line 64, in convert_date
return datetime.date(*map(int, val.split(b"-")))
Exception Type: ValueError at /
Exception Value: month must be in 1..12
您可以像这样更改 settings.py
中日期的输入格式:
DATE_INPUT_FORMATS = ['%m-%d-%Y']
这里是 Django 官方文档:link
使用strptime将字符串转换为日期时间对象,
from datetime import datetime
date_time_str = '10-28-2021'
date1 = datetime.strptime(date_time_str, "%m-%d-%Y")
print(date1)
编辑1: 如果你没有时间想要它,
from datetime import datetime
date_time_str = '10-28-2021'
date1 = datetime.strptime(date_time_str, "%m-%d-%Y").date()
print(type(date1))