我找不到更改models.Datefield()格式的方法。我的应用程序接受用户以“%m%d%YY”格式输入的日期。有没有办法更改Datefield()django模型的日期格式?请帮忙
我的模特
from phonenumber_field.modelfields import PhoneNumberField
# Create your models here.
class reservations_db(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
phone = PhoneNumberField(blank=False)
date = models.DateField(null=True, blank=False)
time = models.TimeField()
person = models.IntegerField()
class Meta():
verbose_name_plural = "Reservations list"
我的观点
from django.shortcuts import render
from .models import reservations_db
# Create your views here.
def reservation(request):
if request.method == 'POST':
object=reservations_db()
object.name = request.POST['name']
object.email = request.POST['email']
object.phone = request.POST['phone']
object.date = request.POST['date']
object.time = request.POST['time']
object.person = request.POST['person']
object.save()
return render(request,'reservation.html')
迁移文件
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='reservations_db',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100)),
('email', models.EmailField(max_length=254)),
('phone', phonenumber_field.modelfields.PhoneNumberField(max_length=128, region=None)),
('date', models.DateTimeField(null=True)),
('time', models.TimeField()),
('person', models.IntegerField()),
],
options={
'verbose_name_plural': 'Reservations list',
},
),
]
终端错误消息:
File "C:\Users\libin.thomas\Envs\freelancing\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\libin.thomas\Envs\freelancing\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "D:\OneDrive - CACTUS\My Documents\GitHub\Libbys_restaurant\booktable\views.py", line 14, in reservation
object.save()
File "C:\Users\libin.thomas\Envs\freelancing\lib\site-packages\django\db\models\base.py", line 745, in save
self.save_base(using=using, force_insert=force_insert,
File "C:\Users\libin.thomas\Envs\freelancing\lib\site-packages\django\db\models\base.py", line 782, in save_base
updated = self._save_table(
File "C:\Users\libin.thomas\Envs\freelancing\lib\site-packages\django\db\models\base.py", line 887, in _save_table
results = self._do_insert(cls._base_manager, using, fields, returning_fields, raw)
File "C:\Users\libin.thomas\Envs\freelancing\lib\site-packages\django\db\models\base.py", line 924, in _do_insert
return manager._insert(
File "C:\Users\libin.thomas\Envs\freelancing\lib\site-packages\django\db\models\manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Users\libin.thomas\Envs\freelancing\lib\site-packages\django\db\models\query.py", line 1204, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
File "C:\Users\libin.thomas\Envs\freelancing\lib\site-packages\django\db\models\sql\compiler.py", line 1391, in execute_sql
for sql, params in self.as_sql():
File "C:\Users\libin.thomas\Envs\freelancing\lib\site-packages\django\db\models\sql\compiler.py", line 1334, in as_sql
value_rows = [
File "C:\Users\libin.thomas\Envs\freelancing\lib\site-packages\django\db\models\sql\compiler.py", line 1335, in <listcomp>
[self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
File "C:\Users\libin.thomas\Envs\freelancing\lib\site-packages\django\db\models\sql\compiler.py", line 1335, in <listcomp>
[self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
File "C:\Users\libin.thomas\Envs\freelancing\lib\site-packages\django\db\models\sql\compiler.py", line 1276, in prepare_value
value = field.get_db_prep_save(value, connection=self.connection)
File "C:\Users\libin.thomas\Envs\freelancing\lib\site-packages\django\db\models\fields\__init__.py", line 821, in get_db_prep_save
return self.get_db_prep_value(value, connection=connection, prepared=False)
File "C:\Users\libin.thomas\Envs\freelancing\lib\site-packages\django\db\models\fields\__init__.py", line 1220, in get_db_prep_value
value = self.get_prep_value(value)
File "C:\Users\libin.thomas\Envs\freelancing\lib\site-packages\django\db\models\fields\__init__.py", line 1215, in get_prep_value
return self.to_python(value)
File "C:\Users\libin.thomas\Envs\freelancing\lib\site-packages\django\db\models\fields\__init__.py", line 1187, in to_python
raise exceptions.ValidationError(
django.core.exceptions.ValidationError: ['“8/25/2020” value has an invalid date format. It must be in YYYY-MM-DD format.']
请注意,我不想使用froms.Datefield()选项。如果避免与表单字段相关的建议,将不胜感激。 提前感谢各位:)
在您的模型中有一个
DateField
,但在迁移文件中它显示了DateTimeField
,这可能是导致问题的原因。将您的迁移文件更改为应该的状态,再次运行迁移,然后它就可以工作了改为使用
ModelForm
-创建一个新的forms.py
文件,并将以下内容放在其中:文件中的注释:
有关详细信息:https://docs.djangoproject.com/en/3.1/topics/forms/modelforms/
现在需要创建视图,它可以是这样的:
Django将处理所有验证。您所要做的就是创建一个模板,例如
registration_form
并使用{{form.as_p}}
相关问题 更多 >
编程相关推荐