How to make Django's DateTimeField optional?

后端 未结 3 1949
野趣味
野趣味 2020-12-13 11:50

I am trying to implement a to-do-list website to practice using Django. In models.py, I have a class called Item to represent a to-do item. In it, I have the fo

相关标签:
3条回答
  • 2020-12-13 12:34

    Before you save the form you need to set the datefields to None. Its works for me

    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']))
    
    0 讨论(0)
  • 2020-12-13 12:42

    "required" is a valid argument for Django forms. For models, you want the keyword args blank=True (for the admin) and null=True (for the database).

    0 讨论(0)
  • 2020-12-13 12:51

    Use due_date = models.DateTimeField(null=True, blank=True)

    Check Field Options for more information.

    0 讨论(0)
提交回复
热议问题