我有一个UserProfile模型,我想更新用户的个人资料点。
class UserProfile(models.Model):
user = models.OneToOneField(User, related_name='profile')
points = DecimalField(default=0)
User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])
我尝试了User.objects.get(username='Joe').profile.update(points=100)
,但由于User.objects.get(username='Joe').profile
不是QuerySet
,因此无效。
如何更新个人资料?或者如何从QuerySet
中获取User.objects.get(username='Joe').profile
个实例?
答案 0 :(得分:3)
User.objects.get(username =' Joe')。profile实际上返回一个UserProfile对象。由于UserProfile对象不是查询集,因此它没有update()方法。
您可以这样做:
try:
userProfile = User.objects.get(username='Joe').profile
userProfile.points = 100
userProfile.save()
except UserProfile.DoesNotExist:
pass
或使用查询集进行更新,其中用户的用户名等于' Joe'
UserProfile.objects.filter(user__username='Joe').update(points=100)