我是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”应该在“ estabelecimento” JSON中包含“ usuarios”列表,但是“ usuarios”甚至不会出现在JSON中。不知道我在做什么错。