Господа, не понимаю, что делаю не так. Есть вьюха:
class SurveySessionViewSet(mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
viewsets.GenericViewSet):
queryset = SurveySession.objects.all()
serializer_class = SurveySessionSerializer
permission_classes = (IsAuthenticated,)
Ее сериалайзер:
class SurveySessionSerializer(serializers.ModelSerializer):
survey = serializers.PrimaryKeyRelatedField(queryset=Survey.objects.all())
user = serializers.HiddenField(default=serializers.CurrentUserDefault())
answers = AnswerShortSerializer(many=True, read_only=True)
is_completed = serializers.BooleanField(read_only=True)
class Meta:
model = SurveySession
fields = '__all__'
read_only_fields = ('created_at', 'completed_at')
def create(self, validated_data):
# If session exists - return
opened_sessions = SurveySession.objects.filter(
**validated_data,
completed_at__isnull=True,
)
if opened_sessions.exists():
return opened_sessions.first()
# Else - create
instance = super().create(validated_data)
return instance
Вызываю вьюху ее с теста:
def test_attributes(self):
self.assertIn('GET', self.view_set.allowed_methods)
self.assertIn('POST', self.view_set.allowed_methods)
И
post не определяется.
Окей, вызываю create:
# self.url_list - это basename-list, соответственно, его выдает правильно
response = client.post(self.url_list, data=data)
И получаю
Method Not allowed!
Client выдает следующую информацию о методах:
'allow': ('Allow', 'GET, HEAD, OPTIONS')
В чем может быть проблема?