1
関連オブジェクトのdelete()
が直ちにそれを削除しないことがわかりました。私の場合、Vader
インスタンスは、instance
のシリアライザのupdate
メソッドのパラメータを経由します。オブジェクトのプロパティを削除する方法(すぐに)
すぐにv.son
を削除しますか?
class Vader(models.Model):
pass
class Luke(models.Model):
dad = models.OneToOneField(Vader, related_name='son')
>>> v = Vader()
>>> hasattr(v, 'son')
False
>>> l = Luke(dad=v)
>>> l.save()
>>> hasattr(v, 'son')
True
>>> v.son
<Luke: Luke object>
>>> v.son.delete()
>>> hasattr(v, 'son')
True
>>> v.son
<Luke: Luke object>
これは動作しませんでした。私は 'v = Vader.objects.get(id = v.id)'をしなければならなかった。これにOneToOne関係があるかどうか疑問に思いますか? 'refresh_from_db()'は 'Vader'テーブルだけを照会し、' .get() 'は' OneToOne'関連テーブルをすべて照会しました。 –
'.delete()'の後に 'v.son'が' Luke'オブジェクトであり続けている場合、 'id'だけがNoneになります。これは '.refresh_from_db()'の後でさえこのままでした。 –
私は 'hasattr(v、 'son')とv.son.id'に自分のチェックを拡大しました。これでデータベースクエリはありません。 –