Параметры запроса в url в проекте Django

Я хотел бы иметь параметры запроса в url моего запроса, которые позволяют получить данные в соответствии с идентификатором растения + название этапа (посев, посадка или сбор урожая.

Example : http://localhost:8000/api/plant/life/calendars?plant_id=1&step_title=sowing

Позвольте мне объяснить: в моей текущей модели plant_life_calendars у меня есть plant_step_id, который присоединяется к таблице plant_step и в этой таблице у меня есть в качестве modele plant_id, который является foreingkey таблицы plant и step_title для названия этапа, как следует из названия.

Надеюсь, это достаточно понятно, это трудно объяснить письменно, но я поместил ниже скрины различных моделей, чтобы лучше понять.

Я хочу, чтобы запрос plant_life_calendars вводил в url запросы plant_id и step_title, которые поступают из таблицы plant_step, поэтому в представлении я сделал так:

class PlantLifeCalendarLinkAPIView(ListAPIView):
permission_classes = (AllowAnonymous,)
serializer_class = ReadPlantLifeCalendarSerializer

def get_queryset(self):
    try:
        plant_id = int(self.request.GET.get('plant_id'))
    except (ValueError, TypeError):
        plant_id = None
    step_title = self.request.GET.get('step_title')

    params = {}
    
    if plant_id:
        params['plant__id'] = plant_id
    if step_title :
        params['step_title '] = step_title 
    if params:
        return PlantLifeCalendar.objects.filter(**params)
    return PlantLifeCalendar.objects.all()

Но он не работает, он дает мне это сообщение об ошибке:

  <pre class="exception_value">Cannot resolve keyword &#x27;plant&#x27; into field. Choices are: end, id, plant_step_id, plantlife, start</pre>
  <table class="meta">

    <tr>
      <th>Request Method:</th>
      <td>GET</td>
    </tr>
    <tr>
      <th>Request URL:</th>
      <td>http://localhost:8000/api/plant/life/calendars?step_title=Sowing&amp;plant_id=1</td>
    </tr>

Вот моя модель PlantLifeCalendar :

from django.db import models
from multiselectfield import MultiSelectField

MONTHS = (
    (1, 'January'),
    (2, 'February'),
    (3, 'March'),
    (4, 'April'),
    (5, 'May'),
    (6, 'June'),
    (7, 'July'),
    (8, 'August'),
    (9, 'September'),
    (10, 'October'),
    (11, 'November'),
    (12, 'December')
)

class PlantLifeCalendar(models.Model):
    plant_step_id = models.ManyToManyField('perma_plant_steps.PlantStep')
    start = MultiSelectField(choices=MONTHS, max_choices=3, max_length=6)
    end = MultiSelectField(choices=MONTHS, max_choices=3, max_length=6)

Вот моя модель PlantStep :

from django.db import models

class PlantStep(models.Model):
    plant_id = models.ForeignKey('perma_plants.Plant', on_delete=models.CASCADE)
    step_title = models.CharField(max_length=50)
    step_order = models.IntegerField()
    step_subtitle = models.CharField(max_length=250)
    help = models.TextField(blank=True, null=True)
Вернуться на верх