Django API: Как получить все объекты, соответствующие определенному значению в поле UUID
при попытке запросить объекты по их полю foreignkey, мне не удается получить никаких подробностей. Идентификатор компании является и uuid (uuid4) полем.
У меня есть модель под названием "контакты":
class Contact(models.Model):
firstname = models.CharField(max_length=35)
lastname = models.CharField(max_length=35)
company = models.ForeignKey(Company, on_delete=models.CASCADE)
Я хочу получить все контакты, которые работают в одной компании. Поэтому я создал ListAPIView в файле views.py Views.py
class ContactViewSet(viewsets.ModelViewSet):
queryset = Contact.objects.all()
serializer_class = ContactSerializer
class CompanyContactsListView(generics.ListAPIView):
serializer_class = ContactSerializer
def get_queryset(self):
company = self.kwargs['company']
return Contact.objects.filter(company=company)
Для получения URL я добавил путь в urls.py
urlpatterns = [
path('', include(router.urls)),
path('contacts/<uuid:company>/', CompanyContactsListView.as_view(), name='contacts')
]
Проблема в том, что когда я пытаюсь пройти по этому пути и ввести UUID компании, которая существует и имеет связанные контакты, я получаю следующую ошибку
HTTP 404 Not Found
Allow: GET, PUT, PATCH, DELETE, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
{
"detail": "Not found."
}
Возможно ли, что мой URL неверен и поэтому я не могу запросить ListAPIView? Потому что мне нужен результат, подобный этому:
[
{
"id": 1,
"firstname": "Joshuah",
"lastname": "Bankhurst",
"company": "e871c47b-9b91-4cf9-94a6-e8135510c11d"
},
{
"id": 2,
"firstname": "Clayborn",
"lastname": "Sylett",
"company": "e871c47b-9b91-4cf9-94a6-e8135510c11d"
}
]
Заранее спасибо!
Похоже, что запрос не соответствует полю uuid pk в методе get queryset. Если предположить, что в kwargs передается uuid компании, запрос должен соответствовать pk модели Company.
class CompanyContactsListView(generics.ListAPIView):
serializer_class = ContactSerializer
def get_queryset(self):
company_uuid = self.kwargs['company']
return Contact.objects.filter(pk=company_uuid)