Django One-Many Models

Следующие модели описывают уязвимость и URL в Интернете та ссылка та уязвимость. Предположите, что каждый URL только когда-либо говорит приблизительно 1 уязвимость, и что много URL обсудят ту уязвимость. Действительно ли это - корректный способ разметить модель?

class Vuln(models.Model):
  pub_date = models.DateTimeField("Publication Date")
  short_description = models.CharField("Description", max_length=70)

  reference_urls = models.ForeignKey(Url, unique=True, blank=True, verbose_name="Reference URLs")
  vendor = models.ForeignKey(Vendor, verbose_name="Vendor")

class Url(models.Model):
  url = models.URLField("URL", max_length=200)

Приложение администрирования дает 'избранное' поле для ссылочных URL, которое не является тем, что я хочу. Когда я добавляю новый объект уязвимости, все существующие URL, которые фиксировались шоу в том выпадающем, которое является снова неестественным. Я чувствую, что это должно вести себя очень похожее на то, как комментарий блога был бы, т.е. комментарий относится к единственной записи в блоге и никому другому и что одна запись в блоге может иметь много комментариев. Как я выражаю это в модели Django?

11
задан Dan 4 December 2013 в 18:50
поделиться

1 ответ

Это должно быть больше похоже на это:

class Vuln(models.Model): 
  pub_date = models.DateTimeField("Publication Date") 
  short_description = models.CharField("Description", max_length=70)
  vendor = models.ForeignKey(Vendor, verbose_name="Vendor") 

class Url(models.Model): 
  url = models.URLField("URL", max_length=200)
  vulnerability = models.ForeignKey(Vuln)

Если вы говорите, что каждый URL-адреса говорит о конкретной уязвимости, то есть ваше отношение в Django DBM :)

как для Поле поставщика, вы просто добавляете другой класс, очень похожий на класс вульн. Например:

class Vendor(models.Model): 
  field_names_go_here = models.TextField(max_length=70)
  short_description = models.CharField("Description", max_length=70)

Надеюсь, это поможет! С уважением, Алекс

23
ответ дан 3 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: