想要保存每个用户的数据 Django
我有一个用户资料模型
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
我的视图是
@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 )
所以分数是存储到数据库里的,但当新用户第一次使用这个应用时,他们的对象没有被存储。我想在用户第一次使用这个应用时为他们创建一个新对象。我也创建了用户资料对象。
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
但是当新用户访问这个应用时,他们的名字和分数没有被存储。所有的Facebook数据都存储在Facebook模型里。请帮帮我。
1 个回答
1
最可靠的方法是使用信号:
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, )