如何在Django中设计通用的views.py函数

2024-06-02 08:54:47 发布

您现在位置:Python中文网/ 问答频道 /正文

def equipment_instance_detail(request, *args, **kwargs):

   pk = kwargs.get('pk')
   equipment_instance = get_object_or_404(EquipmentInstance, pk=pk)

   dataset = OpeningData.objects.all().order_by('date').values('date', 'equipment_temperature')  
   categories = list()
   temperature_series = list()

   for entry in dataset:
       categories.append('%s' % entry['date'])
       temperature_series.append(entry['equipment_temperature'])

   context = {'categories': json.dumps(categories),
              'temperature': json.dumps(temperature_series),
              'equipment_instance': equipment_instance}

   return render(request, 'webapp/equipment_instance_detail.html', context=context)

这是django应用程序的views.py函数,它接收设备实例并为其呈现图形。上面的代码是一个函数,配置为使用chart.js为设备(热压)绘制时间序列图。问题在于,根据设备实例的类型,代码和视觉效果可能会有所不同

例如,现在我有两种设备:热压机和显微镜。每件设备都有自身的实例,这些实例可以包含与其相关的数据

热压机只能使用时间序列图,而显微镜可以使用直方图和散点图。两种类型的设备实例之间的差异将需要唯一的代码和可能唯一的模板。虽然现在只有两个设备实例,但将来可能会有数百个

我想要能处理巨大差异的东西。我可以使用一个巨大的if语句来询问设备实例是否属于某一类型,但这看起来很僵硬,编程也不好。有更好的办法吗

当用户通过管理站点在其系统中创建设备和设备实例时,他们还应在models.py中创建新的设备数据模型

如何将管理站点链接到在models.py中创建新数据类的函数

经过几天的研究,这一功能似乎已不可能实现。真的没有办法自动创建一个独特的django模型吗?每个设备都可能有不同的时间序列数据,最好将其存储在各自的模型中。我认为,这里唯一的解决方案是制作一个非常胖的django模型,该模型涵盖所有设备时间序列数据,并且每当一台新设备进入django应用程序时,都需要手动添加新的数据列


Tags: 数据django实例instancepy模型datecontext