class PontoTuristicoSerializer (ModelSerializer): atracoes = AtracaoSerializer(many=True) endereco = EnderecoSerializer() class Meta: model = PontoTuristico fields = ('id', 'nome', 'descricao', 'aprovado', 'atracoes', 'comentarios', 'avaliacoes', 'endereco', 'descricao_completa')
class pontoTuristicoSerializer(ModelSerializer): atracoes = AtracaoSerializer(many=True) #relaçao muitos pra muitos endereco = EnderecoSerializer() class Meta: model = pontoTuristico fields = ('id', 'nome', 'descricao', 'status', 'endereco', 'foto', 'atracoes', 'comentarios') read_only_fields = ['comentarios'] def cria_atracoes(self, atracoes, ponto): for atracao in atracoes: at = Atracao.objects.create(**atracao) ponto.atracoes.add(at) def create(self, validated_data): atracoes = validated_data['atracoes'] del validated_data['atracoes'] #manytomany relacionamentos #relacionamento com chave estrangeira FK endereco = validated_data['endereco'] del validated_data['endereco'] ponto = pontoTuristico.objects.create(**validated_data) self.cria_atracoes(atracoes, ponto) end = Endereco.objects.create(**endereco) ponto.endereco = end ponto.save() #relacionamento de 1-1 return ponto
class PontoTuristicoSerializer(ModelSerializer): Avaliacoes = AvaliacaoSerializer(many=True) Comentarios = ComentarioSerializer(many=True) atracoes = AtracaoSerializer(many=True) Endereco = EnderecoSerializer() descricao_completa = SerializerMethodField() class Meta: model = PontoTuristico fields = [ 'id', 'nome', 'descricao', 'aprovado', 'foto', # Foreign Keys/ManyToMany 'atracoes', 'Comentarios', 'Avaliacoes', 'Endereco', # Incluido do SerializerMethodField 'descricao_completa', ] def get_descricao_completa(self, obj): return '%s - %s' % (obj.nome, obj.descricao)
class PontoTuristicoSerializer(ModelSerializer): atracoes = AtracaoSerializer(many=True) comentarios = ComentarioSerializer(many=True) avaliacoes = AvaliacaoSerializer(many=True) enderecos = EnderecoSerializer() doc_identificacao = DocIdentificacaoSerializer() descricao_completa = SerializerMethodField(read_only=True) criado_em = DateTimeField(read_only=True, format="%d/%m/%Y %H:%M:%S") class Meta: model = PontoTuristico fields = ('id', 'nome', 'descricao', 'aprovado', 'foto', 'atracoes', 'comentarios', 'avaliacoes', 'enderecos', 'doc_identificacao', 'descricao_completa', 'criado_em') def cria_atracoes(self, atracoes, ponto): for atracao in atracoes: at = Atracao.objects.create(**atracao) ponto.atracoes.add(at) def cria_comentarios(self, comentarios, ponto): for comentario in comentarios: co = Comentario.objects.create(**comentario) ponto.comentarios.add(co) def cria_avaliacoes(self, avaliacoes, ponto): for avaliacao in avaliacoes: av = Avaliacao.objects.create(**avaliacao) ponto.avaliacoes.add(av) def create(self, validated_data): atracoes = validated_data['atracoes'] enderecos = validated_data['enderecos'] comentarios = validated_data['comentarios'] avaliacoes = validated_data['avaliacoes'] doc = validated_data['doc_identificacao'] del validated_data['atracoes'] del validated_data['enderecos'] del validated_data['comentarios'] del validated_data['avaliacoes'] del validated_data['doc_identificacao'] ponto = PontoTuristico.objects.create(**validated_data) self.cria_atracoes(atracoes, ponto) self.cria_comentarios(comentarios, ponto) self.cria_avaliacoes(avaliacoes, ponto) end = Endereco.objects.create(**enderecos) ponto.enderecos = end doci = DocIdentificacao.objects.create(**doc) ponto.doc_identificacao = doci ponto.save() return ponto def get_descricao_completa(self, obj): return '%s - %s' % (obj.nome, obj.descricao)
class PontoTuristicoSerializer(ModelSerializer): logradouro = LogradouroSerializer() atracao = AtracaoSerializer(many=True) class Meta: model = PontoTuristico fields = ('id', 'nome', 'descricao', 'aprovado', 'foto', 'logradouro', 'atracao')
class PontoTuristicoSerializer(ModelSerializer): atracoes = AtracaoSerializer( many=True) # Usamos many quando temos relação de 1 para muitos enderecos = EnderecoSerializer() class Meta: model = PontoTuristico fields = ('id', 'nome', 'descricao', 'aprovado', 'foto', 'atracoes', 'comentarios', 'avaliacoes', 'endereco')
class PontoTuristicoSerializer(ModelSerializer): atracoes = AtracaoSerializer(many=True) class Meta: model = PontoTuristico fields = [ 'id', 'nome', 'descricao', 'aprovado', 'atracoes', 'comments', 'avaliacoes', 'localizacao', 'foto', 'atracoes' ]
class PontoTuristicoSerializer(ModelSerializer): atracao = AtracaoSerializer(many=True) comentarios = ComentariosSerializer(many=True) avaliacoes = AvaliacoesSerializer(many=True) localizacao = EnderecosSerializer() class Meta: model = PontoTuristico fields = ('id', 'nome', 'descricao', 'foto', 'aprovado', 'atracao', 'comentarios', 'avaliacoes', 'localizacao')
class PontoTuristicoSerializer(ModelSerializer): # NestedRelationShip Carrega os objetos internos atracoes = AtracaoSerializer(many=True) endereco = EnderecoSerializer() descricao_completa = SerializerMethodField() #doc_identificacao class Meta: model = PontoTuristico fields = [ 'id', 'nome', 'descricao', 'aprovado', 'foto', 'atracoes', 'comentarios', 'avaliacoes', 'endereco', 'descricao_completa', 'descricao_completa2' ] read_only_fields = ('comentarios', 'avaliacoes') # Salvando requests com objetos relacionados # Modelo ManyToMany # Objetos secundarios def cria_atracoes(self, atracoes, ponto): for atracao in atracoes: at = Atracao.objects.create(**atracao) ponto.atracoes.add(at) # Cria o registro principal e faz a chamada para inserir os objs secundarios def create(self, validated_data): atracoes = validated_data['atracoes'] del validated_data['atracoes'] print(validated_data) endereco = validated_data['endereco'] del validated_data['endereco'] #doc = validated_data['doc_identificacao'] #del validated_data['doc_identificacao'] #doci = DocIdentificacao.objects.create(**doc) ponto = PontoTuristico.objects.create(**validated_data) self.cria_atracoes(atracoes, ponto) end = Endereco.objects.create(**endereco) ponto.endereco = end #ponto.doc_identificacao = doci ponto.save() return ponto # Funciona como um 'transient' (para nao precisar gravar isso no banco) def get_descricao_completa(self, obj): return '%s - %s' % (obj.nome, obj.descricao)
class PontoTuristicuSerializer(ModelSerializer): endereco = EnderecoSerializer() atracoes = AtracaoSerializer() comentarios = ComentarioSerializer() avaliacao = AvaliacaoSerializer(many=True) class Meta: model = PontosTuristicus fields = [ 'id', 'nome', 'descricao', 'avaliacao', 'atracoes', 'comentarios', 'avaliacao', 'endereco', 'foto' ]
class PontoTuristicoSerializer(ModelSerializer): atracoes = AtracaoSerializer(many=True) endereco = EnderecoSerializer(many=False) descricao_completa = SerializerMethodField() doc_identificacao = DocIdentificacaoSerializer() class Meta: model = PontoTuristico fields = ('id', 'nome', 'descricao', 'aprovado', 'foto', 'atracoes', 'comentarios', 'avaliacoes', 'endereco', 'descricao_completa', 'descricao_completa2', 'doc_identificacao') read_only_fields = ('comentarios', 'avaliacoes') def cria_atracoes(self, atracoes, ponto): for atracao in atracoes: at = Atracao.objects.create(**atracao) ponto.atracoes.add(at) def create(self, validated_data): ##carregando atracoes atracoes = validated_data['atracoes'] del validated_data['atracoes'] ##carregando endereco endereco = validated_data['endereco'] del validated_data['endereco'] ##carregando doc identificacao doc = validated_data['doc_identificacao'] del validated_data['doc_identificacao'] ##criando objeto ponto turistico ponto = PontoTuristico.objects.create(**validated_data) ##preenchendo atracoes ao objeto ponto turistico self.cria_atracoes(atracoes, ponto) ##preenchendo endereco ao objeto ponto turistico end = Endereco.objects.create(**endereco) ponto.endereco = end ##preenchendo doc_identificacao doc1 = DocIdentificacao.objects.create(**doc) ponto.doc_identificacao = doc1 ponto.save() ##retornando objeto para gravação return ponto def get_descricao_completa(self, obj): return '%s - %s' % (obj.nome, obj.descricao)
class PontoTuristicoSerializer(ModelSerializer): atracoes = AtracaoSerializer(many=True) endereco = EnderecoSerializer() descricao_completa = SerializerMethodField() class Meta: model = PontoTuristico fields = ('id', 'nome', 'descricao', 'aprovado', 'foto', 'atracoes', 'comentarios', 'avaliacoes', 'endereco', 'descricao_completa', 'descricao_completa2') def get_descricao_completa(self, obj): return f'{obj.nome} - {obj.descricao}'
class PontoTuristicoSerializer(ModelSerializer): atracoes = AtracaoSerializer(many=True) enderecos = EnderecoSerializer() descricao_completa = SerializerMethodField() class Meta: model = PontoTuristico fields = ('id', 'nome', 'descricao', 'aprovado', 'image', 'atracoes', 'enderecos', 'descricao_completa', 'descricao_completa2') def get_descricao_completa(self, obj): return '%s - %s' % (obj.nome, obj.descricao)
class PontoTuristicoSerializer(ModelSerializer): atracoes = AtracaoSerializer(many=True) endereco = EnderecoSerializer() descricao_completa = SerializerMethodField() doc_identificacao = DocIdentificacaoSerializer() class Meta: model = PontoTuristico fields = ( 'id', 'nome', 'descricao', 'aprovado', 'atracoes', 'comentarios', 'avaliacoes', 'endereco', 'descricao_completa', 'descricao_completa2', 'doc_identificacao' ) read_only_fields = ('comentarios',) def cria_atracoe(self, atracoes, ponto): for atracao in atracoes: at = Atracao.objects.create(**atracao) ponto.atracoes.add(at) def create(self, validated_data): atracoes = validated_data['atracoes'] del validated_data['atracoes'] endereco = validated_data['endereco'] del validated_data['endereco'] avaliacoes = validated_data['avaliacoes'] del validated_data['avaliacoes'] doc = validated_data['doc_identificacao'] del validated_data['doc_identificacao'] doci = DocIdentificacao.objects.create(**doc) ponto = PontoTuristico.objects.create(**validated_data) self.cria_atracoe(atracoes, ponto) ponto.avaliacoes.set(avaliacoes) end = Endereco.objects.create(**endereco) ponto.endereco = end ponto.doc_identificacao = doci ponto.save() return ponto def get_descricao_completa(self, obj): return '%s - %s' % (obj.nome, obj.descricao)
class PontoTuristicoSerializer(ModelSerializer): atracoes = AtracaoSerializer(many=True, read_only=True) comentarios = ComentarioSerializer(many=True, read_only=True) class Meta: model = PontoTuristico fields = ( "ponto_turistico_id", "nome", "descricao", "aprovado", "foto", "atracoes", "comentarios", )
class PontoTuristicoSerializer(ModelSerializer): atracoes = AtracaoSerializer(many=True) endereco = EnderecoSerializer() descricao_completa = SerializerMethodField() doc_identificacao = DocIdentificacaoSerializer() class Meta: model = PontoTuristico fields = [ 'id', 'nome', 'descricao', 'doc_identificacao', 'aprovado', 'foto', 'atracoes', 'endereco', 'comentarios', 'avaliacoes', 'descricao_completa', 'descricao_completa2' ] read_only_fields = ('comentarios', 'avaliacoes') depth = 1 def cria_atracoes(self, atracoes, ponto): for atracao in atracoes: at = Atracao.objects.create(**atracao) ponto.atracoes.add(at) def create(self, validated_data): atracoes = validated_data['atracoes'] del validated_data['atracoes'] endereco = validated_data['endereco'] del validated_data['endereco'] docdata = validated_data['doc_identificacao'] del validated_data['doc_identificacao'] #** diz que o django vai interar nessa variavel diccionario para criar o ponto turistico no banco de dados ponto = PontoTuristico.objects.create(**validated_data) self.cria_atracoes(atracoes, ponto) end = Endereco.objects.create(**endereco) ponto.endereco = end doc = DocIdentificacao.objects.create(**docdata) ponto.doc_identificacao = doc ponto.save() return ponto def get_descricao_completa(self, obj): return "%s - %s" % (obj.nome, obj.descricao)
class PontoTuristicoSerializer(serializers.ModelSerializer): ''' many=True - apenas para relacionamentos muitos para muitos read_only=True - no momento da criação do objeto não será necessário enviar o JSON da propriedade atracoes ''' atracoes = AtracaoSerializer(many=True) endereco = EnderecoSerializer() descricao_completa = SerializerMethodField() class Meta: model = PontoTuristico fields = ('id', 'nome', 'descricao', 'aprovado', 'foto', 'atracoes', 'comentarios', 'avaliacoes', 'endereco', 'descricao_completa') read_only_fields = ('comentarios', 'avaliacoes') def cria_atracoes(self, atracoes, ponto): for atracao in atracoes: at = Atracao.objects.create(**atracao) ponto.atracoes.add(at) def create(self, validated_data): atracoes = validated_data['atracoes'] del(validated_data['atracoes']) ponto = PontoTuristico.objects.create(**validated_data) self.cria_atracoes(atracoes, ponto) endereco = validated_data['endereco'] del(validated_data['endedreo']) end = Endereco.objets.create(**endereco) ponto.endereco = end ponto.save() return ponto def get_descricao_completa(self, obj): return '%s - %s' %(obj.nome, obj.descricao)
class PontoTuristicoSerializer(ModelSerializer): atracoes = AtracaoSerializer(many=True) endereco = EnderecoSerializer() """ Criando mais um campo para mostrar no serializer """ descricao_completa = SerializerMethodField() class Meta: model = PontoTuristico fields = ('id', 'nome', 'descricao', 'foto', 'aprovado', 'atracoes', 'comentarios', 'avaliacoes', 'endereco', 'descricao_completa', 'descricao_completa2') """ Criando mais um campo para mostrar no serializer """ def get_descricao_completa(self, obj): return '%s - %s' % (obj.nome, obj.descricao)