Html 关于日期字段,如何向Django模型发送空值而不是空字符串?
我想在使用Django的表单中设置一个非强制的日期字段。为了保持代码的一致性,我没有使用Django表单,因为我以前在这个项目上工作的同事没有使用它。Html 关于日期字段,如何向Django模型发送空值而不是空字符串?,html,django,django-models,django-rest-framework,Html,Django,Django Models,Django Rest Framework,我想在使用Django的表单中设置一个非强制的日期字段。为了保持代码的一致性,我没有使用Django表单,因为我以前在这个项目上工作的同事没有使用它。 以下是我的HTML在表单中的外观 <label class="required" for="eol_date">EOL Date</label> <input type="date" class="form-control form-contro
以下是我的HTML在表单中的外观
<label class="required" for="eol_date">EOL Date</label>
<input type="date" class="form-control form-control-sm" id = "eol_date" name="eol_date">
现在,每当我提交表单时,它都使用JQuery和JS使用API发布数据
问题在于每当我提交表单时,DateField都会抛出一个异常,该异常说明如下
['“” value has an invalid date format. It must be in YYYY-MM-DD format.']
我曾尝试使用JS获取该值并传入null。同样的事情再次重复:
['“null” value has an invalid date format. It must be in YYYY-MM-DD format.']
如果我能解决这个问题,那就太好了。你也可以试试默认设置
eol_date = models.DateField(default = '')
我为我工作。终于!!我找到了答案。 我的方法是使用views.py 我拿起字典,用
dictionary.upate(key,value)
方法对它进行了修改。我的代码如下所示:
def add_network_asset_to_db(request):
try:
data = dict(request.data)
temp = {k:v[0] for k, v in data.items() if k!='csrfmiddlewaretoken'}
temp = data_correction(temp)
form_data = network_asset(**temp)
form_data.save()
return "ok"
except Exception as e:
return Response(status=status.HTTP_400_BAD_REQUEST)
def data_correction(temp):
try:
eol_date_temp = temp['eol_date']
if (eol_date_temp == ''):
temp.update({'eol_date': None})
except Exception as e:
print(e)
try:
eos_date_temp = temp['eos_date']
if (eos_date_temp == ''):
temp.update({'eos_date': None})
except Exception as e:
print(e)
return temp
快乐编码
null
在Python中的等价物是None
class@JPG```类网络资产(models.Model):eol\u日期=models.DateField(null=True,blank=True)eos\u日期=models.DateField(null=True,blank=True)``@xyres如何使用JS传递`None``而不是`null``呢?您认为您的评论可读吗?
def add_network_asset_to_db(request):
try:
data = dict(request.data)
temp = {k:v[0] for k, v in data.items() if k!='csrfmiddlewaretoken'}
temp = data_correction(temp)
form_data = network_asset(**temp)
form_data.save()
return "ok"
except Exception as e:
return Response(status=status.HTTP_400_BAD_REQUEST)
def data_correction(temp):
try:
eol_date_temp = temp['eol_date']
if (eol_date_temp == ''):
temp.update({'eol_date': None})
except Exception as e:
print(e)
try:
eos_date_temp = temp['eos_date']
if (eos_date_temp == ''):
temp.update({'eos_date': None})
except Exception as e:
print(e)
return temp