Я сделал несколько моделей, которые имеют отношения ManyToMany, OneToMany, а затем я попытался создать соответствующий класс в views.py, чтобы можно было видеть подмодели, связанные с выбранной моделью.
Но с точки зренияподключая модели-сериализаторы-представления-URL, я просто не мог понять, как заставить это работать ...
Итак, я хочу сделать следующее: (упрощенно) Есть 3 модели.
- Вечеринка
- Люди
- Еда
Так что Party
имеет отношения ManyToMany с People
и отношения OneToMany с Food
.Когда я достиг URL-адреса, например /party_id/people_id
, я хочу получить информацию о конкретном человеке из данного идентификатора участника.
Вот мой код.
models.py
class Party(models.Model):
par_id = models.TextField()
par_people = models.ManyToManyField(People)
class People(models.Model):
peo_id = models.TextField()
peo_name = models.TextField()
peo_type = models.TextField()
class Food(models.Model):
foo_id = models.TextField()
foo_party = models.ForeignKey(Party, on_delete=models.CASCADE)
serializers.py
class PartySerializer(serializers.ModelSerializer):
class Meta:
model = Party
fields = ('par_id', 'par_people')
# People, Food has same structure...
views.py
class PartyList(generics.ListAPIView):
queryset = Party.objects.all()
serializer_class = PartySerializer
# People, Food has same structure...
urls.py
Вот часть, где я заблудился
#redundancy reduced...(e.g. import)
urlpatterns = [
path('party/<int:par_id>/<int:peo_id>', views.PartyList.as_view()),
path('party/<int:par_id>/<int:foo_id>', views.PartyList.as_view()),
]
Итак, если я достигну website/party/1/3
, я хочу увидеть информацию о человеке (чей peo_id равен 3) партии (чей par_id равен 1) .Что касается еды, все идет так же.
Должен ли я создать новый класс в views.py
, чтобы он работал?Но как можно одновременно проверить par_id
и foo_id
, если я использую класс представления PartyList ..?Любая помощь будет высоко ценится.