Ich versuche, JSON in einem einfachen GET zurückzugeben, das eine Zeile aus einer Join-Tabelle enthält. Die Modelle:Django-REST-Anzeige gefilterte verschachtelte Ressource
class School(models.Model):
id = models.CharField(max_length=18,primary_key=True)
name = models.CharField(max_length=255,blank=False)
class Meta:
db_table='school'
class FKTable(models.Model):
school = models.ForeignKey(School,blank=False, db_column='school_id', on_delete=models.CASCADE)
name = models.CharField(max_length=45, blank=False)
value = models.CharField(max_length=255, blank=True, null=True)
class Meta:
db_table='fk_table'
Und der Serializer:
class SchoolListSerializer(serializers.ModelSerializer):
id = serializers.CharField(source='id')
name = serializers.CharField(source='name')
fkColumn = ????
class Meta:
model = models.School
fields = ('id','name','fkColumn')
Das Problem ist, ich möchte auch die verschachtelte Ressource filtern, die ich beitreten gegen auf der Spalte ‚Name‘, also weiß ich nicht, was Setzen Sie für 'fkColumn' in den Serializer. In SQL wäre es etwa so aussehen:
SELECT school.*, fk_table.value from school INNER JOIN fk_table on
fk_table.school_id = school.id AND fk_table.name = 'some name'
Das JSON Endergebnis ich will, ist:
{
"schools": [
{
"id": "someId",
"name": "someName",
"fkColumn": "Value"
}]}
RelatedField nicht der Dokumentation zu arbeiten und keine scheint scheint eine solide Antwort zu geben, wie um dies zu tun. Irgendwelche Ideen?
sein Dieser nicht ganz erfüllen, was ich Ich suche nach, weil dies eine Eins-zu-Viele-Beziehung ist, und daher gibt es eine Reihe von Zeilen aus 'fkColumn' und ich muss nur eine von ihnen basierend auf dem Wert aus einer der Spalten erhalten. –
ok, ich habe eine Notiz hinzugefügt, um zu erklären, wie man den Serializer verschachtelt – djq