Следующие работы:
CollectedSample.objects.filter(labreportrelation__labReportId__in=labReportIdList).update(collectionTime=updateTime)
Предполагая, что labReportIdList
является списком.
Запуск следующего (модели точно такие же, как в OP):
import os
_module = os.path.split(os.path.dirname(__file__))[-1]
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{}.settings".format(_module))
import django
django.setup()
from app.models import CollectedSample, LabReportRelation
from django.utils.timezone import now
if __name__ == "__main__":
sample = CollectedSample.objects.create(collectionTime=now())
report = LabReportRelation.objects.create(collectedSampleId=sample)
print(f"Initial collection time: {sample.collectionTime} for sample {sample.id}")
labReportIdList = [report.labReportId]
updateTime = now()
CollectedSample.objects.filter(labreportrelation__labReportId__in=labReportIdList).update(collectionTime=updateTime)
sample = CollectedSample.objects.get(pk=sample.pk)
print(f"Updated collection time: {sample.collectionTime} for sample {sample.id}")
Prints:
Initial collection time: 2019-02-23 07:51:10.578433+00:00 for sample 3
Updated collection time: 2019-02-23 07:51:10.735463+00:00 for sample 3
Это следует за отношением ForeignKey в обратном порядке, как объяснено в официальных документах здесь .