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做到这一点。 如果您能帮助我,我将非常感谢。
答案 0 :(得分:0)
我们希望将扫描表与不同的来源(例如IOT,爬网程序或传感器)或任何其他来源链接。 让我用两种方法进行讨论。
每个源可以有不同的表,并通过它们之间的外部关系链接扫描表,但是如果数据集变大,则处理这些表将很麻烦。
因此,这些源具有一组预定义的字段,并且每个源均包含特定格式的数据。因此,创建一个具有字段sourceType(即iot,sender,crawler或api)的主表,并从这些源中提取所需字段并放入主源模型中。并将其与扫描模型链接。您可以运行一些cron作业来处理来自不同来源redis的这些数据,或者kafka可以在这方面为您提供帮助。您也可以芹菜来处理这些任务。