Django - моделирование - многостольная справка - PullRequest
0 голосов
/ 20 ноября 2018

SOS - HELP: я новичок в django (я пришел из PHP (Laravel)): мне нужно моделировать данные: у меня есть такие же модели, которые называются источниками, такими как (IOT, Sensosr, Totens, приложение и т. Д.) КаждыйВ источнике есть ваша специфика (параметры соединения) и сходство, затем у меня есть сканирование, сканирование использует информацию об источниках для выполнения (хранение информации о выполнении) и производит действия на хостах.

Мне нужно связать действия с источниками посредством сканирования,так, чтобы при отображении действия отображалась информация о хостах, сканировании и источнике.Я узнал об абстрактном, но это не очень понятно!

@ 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 Это мои модели источников, откуда поступили данные о деятельности... затем 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

Когда я в списке, чтобы показать действия, мне нужно показать информацию о сканировании и откуда они (источник), как (Деятельность.Host или Activit.Scan.Source.) В PHP моя таблица сканирования имела флаг «источник» и поле идентификатора, поэтому я знал, в какую таблицу извлекать данные из источника.Я знаю, что это не правильный путь, поэтому я хочу сделать это хорошо, используя ORM.если вы можете мне помочь, я буду очень благодарен.

1 Ответ

0 голосов
/ 21 ноября 2018

Мы хотим связать таблицу сканирования с различными источниками, такими как IOT, Crawler или Sensor или любым другим источником.Позвольте мне обсудить с двумя подходами к этому.

  1. Вы можете иметь разные таблицы для каждого источника и связать между собой таблицу сканирования через внешние отношения, но с ними будет трудно работать, еслинабор данных становится большим.

  2. Поскольку эти источники имеют предварительно заданный набор полей, и каждый из источников содержит данные определенного формата.Поэтому создайте основную таблицу с полем sourceType, т.е. iot, sender, crawler или api, извлеките необходимые поля из этих источников и поместите в модель основного источника.и свяжите это с моделью сканирования.Вы можете запустить некоторое задание cron для обработки этих данных из разных источников. Redis или kafka могут помочь вам в этом.Для обработки этих задач вы также можете использовать сельдерей.

...