Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何制作Django';DateTimeField是可选的吗?_Python_Django - Fatal编程技术网

Python 如何制作Django';DateTimeField是可选的吗?

Python 如何制作Django';DateTimeField是可选的吗?,python,django,Python,Django,我正在尝试实现一个待办事项列表网站来练习使用Django。在models.py中,我有一个名为Item的类来表示待办事项。其中,我有以下几行: due_date = models.DateTimeField(required=False) due\u date是一个可选字段,以防用户有某个待办事项的截止日期。问题是,由于意外的关键字参数“required”,上面的一行给了我一个TypeError 因此,我似乎无法对DateTimeField使用关键字参数'required'。有没有办法让Dat

我正在尝试实现一个待办事项列表网站来练习使用Django。在models.py中,我有一个名为
Item
的类来表示待办事项。其中,我有以下几行:

due_date = models.DateTimeField(required=False)
due\u date
是一个可选字段,以防用户有某个待办事项的截止日期。问题是,由于意外的关键字参数“required”,上面的一行给了我一个
TypeError

因此,我似乎无法对
DateTimeField
使用关键字参数'required'。有没有办法让
DateTimeField
成为可选的?或者我遇到的问题是否有标准实现?

使用
due\u date=models.datetime字段(null=True,blank=True)


查看更多信息。

对于Django表单,“required”是一个有效的参数。对于模型,需要关键字args
blank=True
(对于管理员)和
null=True
(对于数据库)。

保存表单之前,需要将日期字段设置为无。它对我有用

class ActividadEdit(SuccessMessageMixin, UpdateView ):
model = Ges_Actividad
form_class = GestionActividadesUpdateForm
template_name = 'seguimiento_formula/actividades_seguimiento_update.html'

def post(self, request, *args, **kwargs):
    form_class = self.get_form_class()
    self.object = self.get_object()
    id_actividad = kwargs['pk']
    instancia_nivel = self.model.objects.get(id=id_actividad)
    form = self.form_class(request.POST, instance=instancia_nivel)
    id_usuario_actual = self.request.user.id  # obtiene id usuario actual

    try:
        periodo_actual = Glo_Periodos.objects.get(id_estado=1)
    except Glo_Periodos.DoesNotExist:
        return None

    try:
        id_jefatura = Ges_Jefatura.objects.get(Q(id_user=id_usuario_actual) & Q(id_periodo=periodo_actual.id))
    except Ges_Jefatura.DoesNotExist:
        return None

    try:
        usuario_controlador = Ges_Controlador.objects.get(id_jefatura=id_jefatura.id)
    except Ges_Controlador.DoesNotExist:
        return None
   #**before you save the form you need to set the datefields to None. Its works for me**.
    form.instance.fecha_real_termino = None
    form.instance.fecha_real_termino = None
    form.instance.fecha_real_termino = None


    if form.is_valid():

        if self.request.session['id_orden'] == 2:
            id_objetivo = Ges_Objetivo_Tactico.objects.get(id=self.request.session['id_objetivo'])
            form.instance.id_objetivo_tactico = id_objetivo

        if self.request.session['id_orden'] == 3:
            id_objetivo = Ges_Objetivo_TacticoTN.objects.get(id=self.request.session['id_objetivo'])
            form.instance.id_objetivo_tacticotn = id_objetivo

        if self.request.session['id_orden'] == 4:
            id_objetivo = Ges_Objetivo_Operativo.objects.get(id=self.request.session['id_objetivo'])
            form.instance.id_objetivo_operativo = id_objetivo

        form.save()
        request.session['message_class'] = "alert alert-success"
        messages.success(self.request, "Los datos fueron actualizados correctamente!")
        return HttpResponseRedirect('/actividades/detalle/' + str(self.request.session['id_objetivo']))
    else:
        request.session['message_class'] = "alert alert-danger"
        messages.error(self.request,
                       "Error interno: No se ha creado el registro. Comuníquese con el administrador.")
        return HttpResponseRedirect('/actividades/detalle/' + str(self.request.session['id_objetivo']))

啊,所以我把表格和模型搞混了。哎呀。感谢您解释了
必需
空白
之间的区别。IIRC
blank=True,空
不建议用于文本字段,因为这样您可以有两个“空”:
'
null
,但是这不适用于日期类型的字段吗?在文本字段上确实最好避免NULL,对于不应该接受空字符串作为有效值的日期/日期时间字段来说,这确实是不同的。我一直认为
blank=True
默示
NULL=True
必填仅适用于表单字段。模型字段使用
blank=True
,对于
DateTimeField
,必须将其与
null=True
组合,以便允许为数据库中的列存储空值。否则,您会得到一个
IntegrityError
。我们是否也需要添加
required=False
,或者这两个就足够了?添加与否有什么区别吗?@halilpazarlama在模型字段中不需要
required=False
,在模型字段定义中它甚至不是有效的关键字参数
required=*
可以在表单字段中使用,如果模型字段定义中已经有
blank=True
,则仍然不需要。我应该把其他答案读得更透彻一些。不过谢谢:)