Html 关于日期字段,如何向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

我想在使用Django的表单中设置一个非强制的日期字段。为了保持代码的一致性,我没有使用Django表单,因为我以前在这个项目上工作的同事没有使用它。
以下是我的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