Как обновить datetime в графене- django - PullRequest
0 голосов
/ 14 февраля 2020

импорт

библиотеки

     import graphene
     from graphene_django.types import DjangoObjectType
     from .models import Proyecto, TipoProyecto
     from applications.tipoproyecto.schema import  TipoProyectoInput

входной графен

вызов модели и входных значений

    class ProyectoType(DjangoObjectType):
        class Meta:
            model = Proyecto

    class ProyectoInput(graphene.InputObjectType):
        idProyecto = graphene.ID()
        tipoProyecto = graphene.Field(TipoProyectoInput)
        codigooc = graphene.String()
        nombre = graphene.String()
        descripcion = graphene.String()
        fechainicio = graphene.types.datetime.DateTime()
        fechafin = graphene.types.datetime.DateTime()
        fechacreacion = graphene.types.datetime.DateTime()
        fechamodificado = graphene.types.datetime.DateTime()

создание проекта

создать новый проект


     class CreateProyecto(graphene.Mutation):
         class Arguments:
             input = ProyectoInput(required=True)
         ok = graphene.Boolean()
         proyecto = graphene.Field(ProyectoType)

         @staticmethod
         def mutate(root,info,input=None):
             ok = True
             tipoProyecto = TipoProyecto.objects.get(pk=input.tipoProyecto.idTipoProyecto)
             if tipoProyecto is None:
                 return CreateProyecto(ok=False, proyecto=None)
             proyectoInstance = Proyecto(
                 tipoProyecto=tipoProyecto,
                 codigooc=input.codigooc,
                 nombre=input.nombre,
                 descripcion=input.descripcion,
                 fechainicio=input.fechainicio,
                 fechafin=input.fechafin,
                 fechacreacion=input.fechacreacion,
                 fechamodificado=input.fechamodificado,
             )
             proyectoInstance.save()
             return CreateProyecto(ok=ok, proyecto=proyectoInstance)

Моя ошибка в обновлении - не сохранять поле даты и времени

Я не сохраняю даты в proyectoInstance, потому что графен ожидал строку или объект. type

        class UpdateProyecto(graphene.Mutation):
        class Arguments:
            idProyecto = graphene.Int(required=True)
            input = ProyectoInput(required=True)
        ok = graphene.Boolean()
        proyecto = graphene.Field(ProyectoType)

        @staticmethod
        def mutate(root, info,idProyecto, input):
            ok = True
            proyectoInstance = Proyecto.objects.get(pk=idProyecto)
            if proyectoInstance:
                ok = True
                tipoProyectoInstance = TipoProyecto.objects.get(pk=input.tipoProyecto.idTipoProyecto)
                if tipoProyectoInstance is None:
                    return UpdateProyecto(ok=False, proyecto=None)
                proyectoInstance.codigooc = input.codigooc if input.codigooc else proyectoInstance.codigooc,
                proyectoInstance.nombre = input.nombre if input.nombre else proyectoInstance.nombre,
                proyectoInstance.descripcion = input.descripcion if input.descripcion else proyectoInstance.descripcion,
                proyectoInstance.fechainicio = input.fechainicio if input.fechainicio else proyectoInstance.fechainicio,
                proyectoInstance.fechafin = input.fechafin if input.fechafin else proyectoInstance.fechafin,
                proyectoInstance.fechacreacion = input.fechacreacion if input.fechacreacion else proyectoInstance.fechacreacion,
                proyectoInstance.fechamodificado = input.fechamodificado if input.fechacreacion else proyectoInstance.fechacreacion,
                proyectoInstance.tipoProyecto.idTipoProyecto = input.tipoProyecto.idTipoProyecto if input.tipoProyecto.idTipoProyecto else tipoProyectoInstance.idTipoProyecto
                proyectoInstance.save()
                return UpdateProyecto(ok=ok, proyecto=proyectoInstance)
            return UpdateProyecto(ok=ok, proyecto=proyectoInstance)

    class Mutation4(graphene.ObjectType):
        createProyecto = CreateProyecto.Field()
        updateProyecto = UpdateProyecto.Field()
    schema = graphene.Schema(query=Query4, mutation=Mutation4)

Ошибка: "" django -expect-string-or-bytes-like-object-when-creation-model "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...