Reputation: 4316
I ahave userprofile model
class UserProfile(models.Model):
user = models.ForeignKey(User)
score = models.IntegerField(max_length = 50, blank = True,null = True)
def __str__(self):
return "%s's profile" % self.user
my view is
@login_required()
def score(request):
if request.is_ajax():
print request.method
if request.method == 'GET':
try:
user1 = UserProfile.objects.get(user=request.user)
print user1
user1.score = request.GET.get('bjpFan')
user1.save()
print user1.score
print "rahul"
return HttpResponse("%s" % user1.score )
except UserProfile.DoesNotExist:
print "Gaurav"
user1 = create_user()
return HttpResponse("%s" % user1.score )
So score is getting stored to database, but when new user use this application his object is not getting stored. Want create new object for the user if he uses this application first time. I created userprofile object also.
def create_user(username, email = None, password = None):
try:
user = User.objects.get(username=username)
except:
user = User(username=username,email=email)
user1=UserProfile(user=user.request, score=user.score)
user.save()
user1.save()
return user
but when new user access this application his name and score is not getting stored. His all facebook data is getting stored in facebook model. please help me.
Upvotes: 2
Views: 602
Reputation: 51745
Most robust way is using signals:
class UserProfile(models.Model):
user = OneToOneField( User, editable = False ) #<----One to One! Not FK.
score = models.IntegerField(max_length = 50, default = 0)
#
# this few lines of code in your UserProfile models.py will
# create the profile just after user is created.
#
from django.dispatch import receiver
from django.db.models.signals import post_save
@receiver(post_save, sender=User)
def createProfile(sender, instance, created, **kwargs):
if created:
UserProfile.objects.create( user = instance, )
Upvotes: 1