在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
,它为不同的,#34;传感器"定义字符串。 (例如BAT,ANE等)。我想拥有这样的房产:
@property
def battery()
return self.sensor.objects.filter(sensor='BAT')
我该如何做到这一点?
答案 0 :(得分:3)
您可以创建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()
答案 1 :(得分:0)
这样的事情可能是:
def _get_battery(self):
return self.sensor.objects.filter(sensor='BAT')
battery = property(_get_battery)