Django-建模-多表参考

时间:2018-11-20 15:17:03

标签: django model modeling

SOS-帮助: 我是Django的新手(我来自PHP(Laravel)): 我需要对数据建模: 我有相同的模型,它们被命名为Sources(例如,IOT,Sensosr,Totens,应用程序等)。每个Source具有您的特殊性(连接参数)和相似性,然后进行扫描,使用源信息执行扫描(存储有关执行的信息)并在主机上进行活动。

我需要通过扫描将活动链接到源,以便在显示活动时显示有关主机,扫描和源的信息。 我了解抽象,但不清楚!

@dirkgroten感谢您的宝贵时间,我对此进行了编辑,以使其更加准确 看这个模型: code

class Sensor (models.Model):
  creation_date  = models.DateTimeField(auto_now=True)
  ...fields

class Crawler (models.Model):
  creation_date  = models.DateTimeField(auto_now=True)
  ...fields

code 它们是我的Sources模型,数据活动来自... 然后 code

class Scan (models.Model):
  creation_date  = models.DateTimeField(auto_now=True)
 # Here I neet to link with a source, but source could be a Crawler, IOT, Sensor or API model
  ...fields

class Host (models.Model):
  creation_date  = models.DateTimeField(auto_now=True)
  ...fields

class Activities (models.Model):
  creation_date  = models.DateTimeField(auto_now=True)
  host  =  models.ForeignKey('Host',on_delete='DELETE')
  scan  =  models.ForeignKey('Scan',on_delete='DELETE')

code

当我列出要显示的活动时,我需要显示有关扫描及其来源(来源)的信息 像(Activity.Host或Activit.Scan.Source。) 在PHP中,我的扫描表有一个“源”标志和一个ID字段,因此我知道从哪个表中获取数据。 我知道这不是正确的方法,因此我想使用ORM做到这一点。 如果您能帮助我,我将非常感谢。

1 个答案:

答案 0 :(得分:0)

我们希望将扫描表与不同的来源(例如IOT,爬网程序或传感器)或任何其他来源链接。 让我用两种方法进行讨论。

  1. 每个源可以有不同的表,并通过它们之间的外部关系链接扫描表,但是如果数据集变大,则处理这些表将很麻烦。

  2. 因此,这些源具有一组预定义的字段,并且每个源均包含特定格式的数据。因此,创建一个具有字段sourceType(即iot,sender,crawler或api)的主表,并从这些源中提取所需字段并放入主源模型中。并将其与扫描模型链接。您可以运行一些cron作业来处理来自不同来源redis的这些数据,或者kafka可以在这方面为您提供帮助。您也可以芹菜来处理这些任务。