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?

Вернуться на верх