DT
сам так делаю
Size: a a a
DT
J
MT
DT
J
D
@action(detail=True, methods=['post'], serializer_class=UrlLogSerializer)
DT
DT
@action(detail=True, methods=['post'], serializer_class=UrlLogSerializer)
DT
D
def test_create_url(self):
user_session = mixer.blend('tracker.UserSession', email='test@gmail.com')
kwargs = {'session_id': str(user_session.session_id)}
rf = APIRequestFactory()
request = rf.post(f"/api/session/{kwargs['session_id']}/click_url/")
response = UserSessionViewSet.as_view({'post': 'create'})(request, **kwargs)
print(response.data)
print(response.url)
assert response.status_code == 200
D
@action(detail=True, methods=['post'], serializer_class=UrlLogSerializer)
def click_url(self, request, *args, **kwargs):
instance = UrlLog(user_session=self.get_object())
serializer = self.get_serializer(instance, data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)
J
DT
raise serializers.ValidationError({'error': 'error message'})
тут
вместо error указываешь имя поляI
MyModel.objects.my_method()
все ок, а MyModel.objects.filter(...).my_method()
'QuerySet' object has no attribute 'my_method'DT
def test_create_url(self):
user_session = mixer.blend('tracker.UserSession', email='test@gmail.com')
kwargs = {'session_id': str(user_session.session_id)}
rf = APIRequestFactory()
request = rf.post(f"/api/session/{kwargs['session_id']}/click_url/")
response = UserSessionViewSet.as_view({'post': 'create'})(request, **kwargs)
print(response.data)
print(response.url)
assert response.status_code == 200
D
DT
D
DT
.as_view({'post': 'create'})
так ты же это вызываешь ?DT
MyModel.objects.my_method()
все ок, а MyModel.objects.filter(...).my_method()
'QuerySet' object has no attribute 'my_method'