在 django 应用程序中,使用现有数据库,我使用 inspectdb 构建模型:
class Sensorparser(models.Model):
""" a read-only implemenation to access the MeshliumDB """
id_wasp = models.TextField(blank=True, null=True)
id_secret = models.TextField(blank=True, null=True)
frame_type = models.IntegerField(blank=True, null=True)
frame_number = models.IntegerField(blank=True, null=True)
sensor = models.TextField(blank=True, null=True)
value = models.TextField(blank=True, null=True)
timestamp = models.DateTimeField()
raw = models.TextField(blank=True, null=True)
parser_type = models.IntegerField()
def save(self, *args, **kwargs):
return
def delete(self, *args, **kwargs):
return
class Meta:
managed = False
db_table = 'sensorParser'
我添加了 save 和 delete 方法,因为这应该是一个只读模型。
其中一个字段是 sensor,它为不同的“传感器”(例如 BAT、ANE 等)定义了字符串。我想要这样的属性(property):
@property
def battery()
return self.sensor.objects.filter(sensor='BAT')
我怎样才能做到这一点?
请您参考如下方法:
您可以创建 custom manager :
class BatteryManager(models.Manager):
def get_queryset(self):
return super(BatteryManager, self).get_queryset().filter(sensor='BAT')
class Sensorparser(models.Model):
batteries = BatteryManager()
# etc
然后像这样使用它:
batteries = Sensorparser.batteries.all()
