So I made this ajax view for my user model
def new_notification(request): user = request.user user.profile.notifications += 1 user.save() return JsonResponse(serializers.serialize('json', [user]), safe=False)
I extends my user model with an Integerfield of notification, but when I call the ajax it does not give +1 to my notification model, does anybody know what is going on?
my urls.py
url(r'^ajax/new_notification/$', new_notification),
and my ajax call
$.get('/ajax/new_notification/')
my user profile model
class ProfileImage(models.Model): """ Profile model """ user = models.OneToOneField( verbose_name=_('User'), #to=settings.AUTH_USER_MODEL, to = User, related_name='profile', on_delete=models.CASCADE ) avatar = models.ImageField(upload_to='profile_image') notifications = models.FloatField(default='0')
Advertisement
Answer
So, change url:
url(r'^ajax/new_notification/(?P<username>[a-zA-Z0-9/_.-]*)', new_notification),
Then, change the view function:
def new_notification(request, username): #user = request.user user = User.objects.get(username=username) print(user.profile) print(user.profile.notifications) user.profile.notifications += 1 print(user.profile.notifications) user.profile.save() #user.save() return JsonResponse(serializers.serialize('json', [user]), safe=False)
Then, in your ajax call in the template, change the url to: /ajax/new_notification/{{ user.username }}