我有一个模型Device
。每个设备都有3个传感器,它们具有自己的颜色,状态等。
因此,我创建了一个类Sensor
,需要在其中存储所有传感器数据。
现在,我需要在Device
模型中为与Sensor模型连接的每个传感器提供一个属性,以便我可以检索数据。
执行此操作的最佳方法是什么?
这样做吗?:
在每个传感器的设备模型中:
light_sensor = models.ForeignKey(
Sensor, on_delete=SET_NULL, blank=True, null=True,
)
或在传感器模型中:
class Sensor(models.Model):
device = models.ForeignKey(
Device, on_delete=models.CASCADE, related_name="devicesensor"
)
status = models.CharField(max_length=25, blank=False)
color = models.CharField(max_length=25, blank=False)
答案 0 :(得分:1)
您想要的是多对一关系,其中许多传感器连接到一个设备。 在这种情况下,外键位于多个侧面。因此,每个传感器都应具有一个指向其设备的外键。
这是一个粗略的例子。
from django.db import models
class Device(models.Model):
pass
class Sensor(models.Model):
device = models.ForeignKey(
Device, on_delete=models.CASCADE, related_name="devicesensor"
)
status = models.CharField(max_length=25, blank=False)
color = models.CharField(max_length=25, blank=False)
现在从外壳程序开始,我们使用manage.py shell
...
# create device
d = Device()
d.save()
# create sensors
s1 = Sensor(device=d, status='online', color='green');
s1.save()
s2 = Sensor(device=d, status='online', color='green');
s2.save()
s3 = Sensor(device=d, status='online', color='green');
s3.save()
# get sensors
d = Device.objects.first()
d.devicesensor.all()