Я новичок в DRF и django в целом, видел документацию DRF по отношениям сериализатора, но это все еще не решило мою проблему.
У меня есть эти две модели:
class Estabelecimento(models.Model):
endereco = models.ForeignKey(Endereco, related_name='estabelecimento_endereco', on_delete=models.SET_NULL, null=True)
nome = models.CharField(max_length=32)
telefone = models.CharField(max_length=11)
email = models.EmailField()
cnpj = models.CharField(max_length=14)
imagem = models.CharField(max_length=128)
horario_atendimento = models.CharField(max_length=32)
aberto = models.BooleanField()
ativo = models.BooleanField(default=True)
class Usuario(models.Model):
estabelecimento = models.ForeignKey(Estabelecimento, related_name='usuario_estabelecimento', on_delete=models.SET_NULL, null=True)
endereco = models.ForeignKey(Endereco, related_name='usuario_endereco', on_delete=models.SET_NULL, null=True)
nome = models.CharField(max_length=32)
sobrenome = models.CharField(max_length=32)
email = models.EmailField()
cpf = models.CharField(max_length=11)
password = models.CharField(max_length=64)
role = models.CharField(max_length=12)
ativo = models.BooleanField(default=True)
Это сериализаторы:
class EstabelecimentoSerializer(serializers.ModelSerializer):
pedidos = pedido_serializer.PedidoSerializer(many=True, read_only=True)
usuarios = usuario_serializer.UsuarioSerializer(many=True, read_only=True)
class Meta:
model = models.Estabelecimento
fields = ('id', 'nome', 'telefone', 'email', 'cnpj', 'imagem', 'horario_atendimento',
'aberto', 'ativo', 'endereco', 'pedidos', 'usuarios',)
read_only_fields = ('id',)
class UsuarioSerializer(serializers.ModelSerializer):
pedidos = pedido_serializer.PedidoSerializer(many=True, read_only=True)
class Meta:
model = models.Usuario
fields = ('id', 'nome', 'sobrenome', 'email', 'cpf', 'password',
'role', 'ativo', 'estabelecimento', 'endereco', 'pedidos',)
read_only_fields = ('id',)
Результат, который я хотел, будет примерно таким (пример из документации DRF):
{
'album_name': 'Things We Lost In The Fire',
'artist': 'Low',
'tracks': [
'1: Sunflower',
'2: Whitetail',
'3: Dinosaur Act',
...
]
}
"Estabelecimento" должен иметь список «usuar ios» в «installelecimento» JSON, но «usuar ios» даже не появляется в JSON. Не знаю, что делаю не так.