Cannot cast AnonymousUser to int. Are you trying to use it in place of User?
I am unsure how to adjust my code to stop generating this error when i make a post request to my url. I have attached code for my serializers, views and models.
class ActivitySessionSerializer(serializers.Serializer):
activity_name = serializers.CharField(min_length=1, max_length=100)
def create(self, validated_data):
activity, created = Activity.objects.get_or_create(name=validated_data['activity_name'],
owner=self.context['request'].user)
return ActivitySession.objects.create(activity=activity, start_time=datetime.datetime.now())
class StartSessionView(generics.CreateAPIView):
serializer_class = serializers.ActivitySessionSerializer
User = get_user_model()
class ActivityType(models.Model):
name = models.CharField(max_length=100)
user = models.ForeignKey(User, on_delete=models.CASCADE)
class Activity(models.Model):
name = models.CharField(max_length=100)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
activity_type = models.ForeignKey(ActivityType, on_delete=models.CASCADE, null=True, blank=True)
class ActivitySession(models.Model):
activity = models.ForeignKey(Activity, on_delete=models.CASCADE)
start_time = models.DateTimeField()
end_time = models.DateTimeField()
urlpatterns = [
path('starting_session/', views.StartSessionView.as_view()),
]
I believe i solved it by changing line
Activity.objects.get_or_create(name=validated_data['activity_name'],
owner=self.context['request'].user)
to
Activity.objects.get_or_create(name=validated_data['activity_name'],
owner=self.context['request'].user.id)
I had to add id field specifically instead of the total user object