DRF Внешний ключ из обратного поиска
Используя django rest framework, я получаю следующий результат:
slides = [
{
"id": "1",
"sentence": "The person is in the house.",
"sentence-type": "simple",
"clauses": {
"type": "independent clause",
"description": "An independent clause has a subject and a verb. An independent clause expresses a complete thought."
},
"wordlist": [
{
"pos": "article",
"pos_description": "An article modifies a noun like an adjective does and are considered necessary to provide proper syntax to a sentence.",
"colour": "21 128 61",
"word": "the"
},
Вот мои модели:
class Sentence(models.Model):
sentence = models.CharField(max_length=500)
class Word(models.Model):
word = models.CharField(max_length=255)
part_of_sentence = models.ForeignKey(PartOfSentence, related_name='pos_word', on_delete=models.CASCADE, blank=True, null=True)
words = models.ForeignKey(Sentence, related_name='sentence_word', on_delete=models.CASCADE, blank=True, null=True)
class PartOfSentence(models.Model):
part_of_sentence = models.CharField(max_length=20)
pos_colour = models.CharField(max_length=20)
pos_description = models.CharField(max_length=512)
class Clause(models.Model):
TYPES = (
('NONE', 'None'),
('INDEPENDENT', 'Independent'),
('DEPENDENT', 'Dependent'),
('COORDINATING_CONJUNCTION', 'Coordinating-Conjunction'),
('SUBORDINATING_CONJUNCTION', 'Subordinating-Conjunction')
)
clause = models.CharField(choices=TYPES, max_length=40, default='None')
И сериализатор:
class SentenceSerializer(serializers.ModelSerializer):
clause = ClauseSerializer()
words = serializers.SlugRelatedField(
source='sentence_word',
slug_field='word',
many=True,
read_only=True
)
class Meta:
model = Sentence
fields = ('sentence', 'sentence_type', 'clause', 'words', 'part_of_sentence')
В результате получается:
[
{
"sentence": "the person is in the house",
"sentence_type": "SIMPLE",
"clause": {
"clause": "INDEPENDENT"
},
"words": [
"the",
"person",
"is"
]
}
]
Что не идеально, т.е. отсутствуют ключи для массива words вместе с parts_of_words. Я думаю, что я на правильном пути - мой вопрос в следующем: Могу ли я сделать прямой поиск из модели Word, используя поле SlugRelated?