какое поле 'player-details'
? Это не поле на вашей PlayerTable
модели. Вам необходимо использовать имя соответствующего поля. В вашем случае, поскольку у вас есть ForeignKey
отношение ChildTable
-->
PlayerTable
, и вы не указали related_name
, это childtable_set
. Так что если вы делаете это, оно должно работать:
class PlayerTableSerializer(serializers.ModelSerializer):
childtable_set = ChildTableSerializer(many=True, read_only=True)
class Meta:
model = PlayerTable
fields = ('childtable_set',)
В качестве альтернативы, измените название модели, чтобы она была более согласована с соглашениями Django:
class PlayerDetail(models.Model):
player = models.ForeignKey(Player, db_column="fk", related_name="player_details", null=True, blank=True, on_delete=models.CASCADE)
...
class Meta:
managed = False
db_table = "child_table"
class Player(models.Model):
name = models.CharField(db_column="player_name", ...)
class Meta:
db_table = "player_table"
тогда ваш сериализатор будет работать, потому что отношение player_details
. Это также имеет то преимущество, что когда вы делаете details.player
, вы получаете объект игрока (теперь вы должны сделать details.fk
, но это на самом деле не возвращает значение внешнего ключа, оно возвращает объект Player
). Также у ваших моделей есть больше питонических названий (Player
, а не PlayerTable
). Ваш код будет намного более читабельным.