Сначала вы видите мой класс из 4 методов в view.py:
class ContactList(ListAPIView):
queryset = Contact.objects.all()
serializer_class = ContactSerializers
# This is delete method
class ContactDelete(DestroyAPIView):
queryset = Contact.objects.all()
serializer_class = ContactSerializers
lookup_field = 'pk'
#below is post method to create new contact
class ContactCreate(CreateAPIView):
queryset = Contact.objects.all()
serializer_class = ContactSerializers
#below is put and patch method to update contact
class ContactUpdate(UpdateAPIView):
queryset = Contact.objects.all()
serializer_class = ContactSerializers
lookup_field = 'pk'
Я хочу, чтобы ContactList
и ContactCreate
были в одном классе
а ContactDelete
и ContactUpdate
должны быть в одном классе
Я не понимаю, как его объединить, может ли кто-нибудь сказать мне, как это сделать?
Примечание: я не хочу APIViewSet
Да, это проблема
Какая проблема? Я думаю, что это более правильный и чистый способ
Вы говорите о просмотре?
Да, это более чистый способ, но у меня есть другая цель его использовать, в этом проблема
DRF уже проводит занятия для этой цели. Вы можете проверить их здесь и здесь
from rest_framework.generics import ListCreateAPIView, RetrieveDestroyAPIView
class ContactCreateListAPIView(ListCreateAPIView):
queryset = Contact.objects.all()
serializer_class = ContactSerializers
class ContactRetrieveDeleteAPIView(RetrieveDestroyAPIView):
queryset = Contact.objects.all()
serializer_class = ContactSerializers
lookup_field = 'pk'
Надеюсь это поможет
# This is create and list method
class ContactListCreate(ListAPIView, CreateAPIView):
queryset = Contact.objects.all()
serializer_class = ContactSerializers
# This is delete and update method
class ContactDeleteUpdate(DestroyAPIView, UpdateAPIView):
queryset = Contact.objects.all()
serializer_class = ContactSerializers
Вы можете удалить lookup_field = 'pk'
из представления, так как DRF принял pk
в качестве значения по умолчанию.
Есть ли проблема, если вы объедините все эти четыре класса в один класс?