特定のインスタンスが最新の定義であるかどうかを判断するためにlatest
フィールドを持つモデルがあります。Django:ブールフィールドが更新されない
dbに新しい行を追加するときに、すでに存在するレコードに対してlatest
をfalseとマークしてください。
latest_version = Segment.objects.filter(title=title, latest=True).first()
if latest_version:
latest_version.latest = False
latest_version.save()
これは、比較的まっすぐ進むようだがlatest
フィールドが更新されませんとTrue
としてとどまります。
あなたは 'first'の代わりに' last'を使いたいですか? –
フィルタの最初の出現を更新しています。すなわち、 'Segment.objects.filter(title = title、latest = True).first()'は、フィルタリングした同じ 'Segment'オブジェクトを確認していますか?むしろフィルターを試し、その 'Segment'文書の' id'を使って一致させるべきです。 'Segment.objects.filter(title = title、latest = True).first()'は何も返しません。この場合、何も更新されません。全体的にコードは完璧に見えますし、うまくいくと思われます。 –