3

django のモデルのインスタンスの関連フィールドを含む複数のフィールドを更新する標準的な方法は何ですか? ...

Class User(models.Model):
    id = models.CharField()
    name = models.CharField()
    dob = models.CharField()

Class Appointment(models.Model):
    user = models.ForeignKey(User)
    app_id = models.CharField()
    time = models.DateTimeField()
    status = models.CharField()

予定モデルの複数のフィールドを更新するには、私はただ行うことができます

dict ={
"app_id": "123",
"time": "2012-01-01 10:30",
"status": "Open"
}
Appointment.objects.filter(app_id=123).update(dict)

関連モデルを更新する方法はありますか? 予定モデルとユーザー モデルを更新するにはどうすればよいですか?
場合:

dict ={
"name": "foo",
"app_id": "123",
"time": "2012-01-01 10:30",
"status": "Open"
}
4

1 に答える 1

8

わかりやすくするために、それは「継承」の意味ではありません。予定はユーザーに関連付けられていますが、ユーザーから継承されていません。

クエリセットの更新メソッドは、1 回の呼び出しでこれを行うことはできません。ドキュメントは言う:

更新される QuerySet の唯一の制限は、関連するモデルではなく、モデルのメイン テーブルの列のみを更新できることです。

https://docs.djangoproject.com/en/dev/ref/models/querysets/#update

app_id しかない場合は、2 番目の update 呼び出しを記述できます。

User.objects.filter(appointment__app_id=123).update(name='foo')
于 2013-05-15T17:13:38.077 に答える