我正在一個Django 1.10項目的工作與Python 3 這是我的models.py:的Django不更新數據庫
# /Multiple choices/
SEX_CHOICES = (('M', 'Male'),
('F', 'Female')
)
ZONE_CHOICES = (('D', 'Départementale'),
('N', 'Nationale')
)
# /Extension of User model/
class Profile(models.Model):
user = models.OneToOneField(User, related_name='profile')
sex = models.CharField(max_length=1, choices=SEX_CHOICES, default='M')
departementNumber = models.PositiveSmallIntegerField(default=88, validators=[MaxValueValidator(101)])
departement = models.CharField(max_length=200)
zone = models.CharField(max_length=1, choices=ZONE_CHOICES, default='D')
receivedApprove = models.PositiveSmallIntegerField(default=0)
receivedDescription = models.PositiveSmallIntegerField(default=0)
receivedDesapprove = models.PositiveSmallIntegerField(default=0)
givenApprove = models.PositiveSmallIntegerField(default=0)
givenDescription = models.PositiveSmallIntegerField(default=0)
givenDisapprove = models.PositiveSmallIntegerField(default=0)
def __str__(self):
return self.user.username
我所試圖做的是採取一些用戶信息,並完成他們的個人資料。這是我在我的views.py中做的:
user_id = request.user
firstname = form.cleaned_data['firstname']
lastname = form.cleaned_data['lastname']
email = form.cleaned_data['email']
sex = form2.cleaned_data['sex']
departementNumber = form2.cleaned_data['departementNumber']
zone = form2.cleaned_data['zone']
在這個階段,一切工作正常。當我嘗試更新我的模型時,問題就開始了。用戶對象已正確更新:
upd = User.objects.filter(id=user_id.id).update(first_name=firstname, last_name=lastname, email=email)
但資料沒有更新:
upd2 = Profile.objects.filter(id=user_id.id).update(sex=sex, departementNumber=departementNumber, departement=depName, zone=zone)
,我還沒有一個單一的警告或錯誤信息。
首先,你爲什麼要用update來更新單行?其次,爲什麼你認爲一個配置文件與其相關用戶具有相同的id值? –
那麼因爲在查詢集'更新'是更新模型的正確方法。而「爲什麼你認爲一個配置文件與其相關的用戶具有相同的id值?」由於我使用'OneToOneField',配置文件應該使用用戶ID作爲外鍵。不是? –
是的,但你沒有通過外鍵查詢,你是通過主鍵查詢的。 –