Python 保存时更新其他模型中所有m2m条目的foreignkey字段
一个模型(periodiccertification)由外键链接到另一个模型(assets)。该周期模型还通过一个foreignkey(blank和null true)链接,以访问另一个模型(projectconditions)的m2m关系(资产) db中周期认证的相关字段: 项目条件的m2m关系: 问题是: 保存projectconditions时,periodiccertification模型中的所有资产只需更新一个字段:projectconditions\u id(外键)。通过这种方式,可以筛选与projectconditions批处理相关的所有资产 这可以通过覆盖save_model()来实现,还是需要不同的信号?因此,每次提交projectconditions表单时,我都试图完成以下任务: 对于每个等于periodiccertification.asset\u id的项目条件.assets.asset\u id: 使用projects.projectsconditions\u id更新processs.periodiccertification.projectconditions\u id 是否有人知道在保存时(可能是您要保存的资产还没有出现问题)或在某种post_save函数期间使用python方法来执行此操作 尝试学习python(初级),但希望下面的尝试进一步说明其含义:Python 保存时更新其他模型中所有m2m条目的foreignkey字段,python,django,Python,Django,一个模型(periodiccertification)由外键链接到另一个模型(assets)。该周期模型还通过一个foreignkey(blank和null true)链接,以访问另一个模型(projectconditions)的m2m关系(资产) db中周期认证的相关字段: 项目条件的m2m关系: 问题是: 保存projectconditions时,periodiccertification模型中的所有资产只需更新一个字段:projectconditions\u id(外键)。通过这种方式
def save_model(self, request, obj, form, change):
"""obtain all entries in Periodic Certification Model that has the same asset_id as in m2m"""
certification_asset = PeriodicCertification.objects.get(asset_id=assets.asset_id)
""""save the current projectconditions"""
for asset_id in certification_assets:
certification_asset.projectconditions_id = obj.id
obj.save()
您可能可以使用Django的函数进行所需的更改 因此,在您的
ProjectConditions
模型中:
def save(self, *args, **kwargs):
super(ProjectConditions, self).save(*args, **kwargs)
PeriodicCertification.objects.filter(asset_id__in=[x.id for x in self.assets]).update(projectconditions_id=self.id)
self.assets.all()]中的[x.id for x应该为您提供当前实例的资产中与资产有许多关系的所有资产id
s的列表。然后,您将筛选您的PeriodicCertification
模型,只筛选与列表中的实例匹配的asset\u id
。最后,使用update
将projectconditions\u id
字段设置为当前实例的id
我试着把细节弄对,但如果没有,希望它能为您指明正确的方向。您可能可以使用Django的函数来进行所需的更改
因此,在您的ProjectConditions
模型中:
def save(self, *args, **kwargs):
super(ProjectConditions, self).save(*args, **kwargs)
PeriodicCertification.objects.filter(asset_id__in=[x.id for x in self.assets]).update(projectconditions_id=self.id)
self.assets.all()]
中的[x.id for x应该为您提供当前实例的资产中与资产有许多关系的所有资产id
s的列表。然后,您将筛选您的PeriodicCertification
模型,只筛选与列表中的实例匹配的asset\u id
。最后,使用update
将projectconditions\u id
字段设置为当前实例的id
我试图把细节弄清楚,但如果没有,希望它能为你指明正确的方向。你能在这里发布你的模型吗?你能在这里发布你的模型吗。