如何添加需关联Location外键ID的Measurement条目
如何为Miami的Location添加关联的Measurement记录
首先得补全你的模型定义——目前Measurement模型里没有和Location关联的字段,得先加个外键才能建立一对多的关联关系:
class Measurement(models.Model): server = models.CharField(('server'), max_length=10) cpu_util = models.CharField(('CPU使用率'), max_length=10) # 这里给你补了个合理的字段名,你可以根据实际需求调整 location = models.ForeignKey(Location, on_delete=models.CASCADE, related_name='measurements') # 新增外键关联Location表
接下来就可以用两种常见方式给Miami对应的Location添加Measurement记录了:
方式一:先获取Miami的Location实例,再创建关联记录
这种方式最直观,先定位到Miami的Location对象,再创建Measurement时直接绑定关联:
# 第一步:获取Miami对应的Location实例(用filter更安全,避免找不到记录时抛出异常) miami_location = Location.objects.filter(city='Miami').first() if miami_location: # 先确认找到对应记录 # 第二步:创建并关联Measurement Measurement.objects.create( server='server-001', cpu_util='75%', location=miami_location # 直接关联已找到的Miami Location实例 ) else: print("未找到Miami对应的Location记录,请先确认数据库中有该城市的条目")
如果你确定Miami的记录一定存在,也可以用get()方法,但找不到时会抛出DoesNotExist异常,需要额外捕获:
try: miami_location = Location.objects.get(city='Miami') Measurement.objects.create( server='server-002', cpu_util='62%', location=miami_location ) except Location.DoesNotExist: print("数据库中没有Miami的Location记录哦")
方式二:通过Location的关联管理器直接添加
如果已经拿到了Miami的Location实例,还可以用它的关联管理器(就是刚才定义的related_name='measurements')直接创建关联记录,写法更简洁:
miami_location = Location.objects.filter(city='Miami').first() if miami_location: miami_location.measurements.create( server='server-003', cpu_util='80%' )
这种方式不需要手动指定location字段,Django会自动帮你把新创建的Measurement绑定到对应的Location实例上。
内容的提问来源于stack exchange,提问作者Ethan
相关产品推荐
相关产品推荐

