は、これが私のmodels.pyです:ジャンゴ更新しないデータベース
# /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)
そして、私は1つの警告やエラーメッセージが表示されていません。
まず、1行更新に 'update'を使用していますか?第二に、プロファイルが関連するユーザーと同じid値を持つと仮定しているのはなぜですか? –
クエリセット 'update'はモデルを更新する正しい方法です。そして、「なぜ、プロファイルは、その関連ユーザーと同じid値を持つと思いますか?」 'OneToOneField'を使っているので、ProfileはUser IDを外部キーとして使うべきです。いいえ? –
はい、あなたは外部キーで照会していません。主キーで照会しています。 –