python - Django 一对多模型

标签 python django model one-to-many

以下模型描述了一个漏洞以及互联网上引用该漏洞的 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)

Admin 应用程序为引用 URL 提供了一个“选择”框,这不是我想要的。当我添加一个新的漏洞对象时,所有已输入的现有 URL 都会显示在该下拉列表中,这又是不自然的。我觉得这应该与博客评论的行为非常相似,即。该评论仅适用于单个博客条目,没有其他条目,并且该博客条目可能有很多评论。我如何在 Django 模型中表达它?

最佳答案

应该更像这样:

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 Vuln。例如:

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

希望对您有所帮助! 问候,亚历克斯

关于python - Django 一对多模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2039958/

相关文章:

python - 处理长度未知的行 block - 使用异步?

django - 在 django-filters 的 FilterSet 中使用全文搜索的最佳方式?

c# - 如何在c#中反序列化Json文件以插入表中

django - 添加多对多关系时检测重复插入

typescript - 在客户端和服务器之间共享类型

python - 打印列表中的项目数

Python 函数及其 __call__ 属性

Python communicate() 与 NMap

Django REST EmailAddress 匹配查询不存在

django - 从 shell 脚本调用 Django 命令不同于手动调用