импорт
библиотеки
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 "