我正在尝试通过中间模型将漏洞cve模型与产品联系起来,以基于产品/ cve链接/匹配每个漏洞
class Vulnerability(models.Model):
cveid = models.CharField(max_length=32, null=True, blank=True)
affected_products = models.ManyToManyField(
Product,
through='ProductVulnerability',
through_fields=("product", "vulnerability")
)
class ProductVulnerability(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
vulnerability = models.ForeignKey(Vulnerability, on_delete=models.CASCADE)
class Meta:
unique_together = [("product", "vulnerability")]service | ERRORS:
service | api.Vulnerability.affected_products: (fields.E339) 'ProductVulnerability.product' is not a foreign key to 'Vulnerability'.
service | HINT: Did you mean one of the following foreign keys to 'Vulnerability': vulnerability?
service | api.Vulnerability.affected_products: (fields.E339) 'ProductVulnerability.vulnerability' is not a foreign key to 'Product'.
service | HINT: Did you mean one of the following foreign keys to 'Product': product?
service | SystemCheckError: System check identified some issues:发布于 2021-04-12 10:24:44
正如documented和As HINT所建议的那样
through_fields接受二元组(' field1 ',' field2 '),其中field1是定义字段的模型的外键名称,field2是目标模型的外键名称。
所以在你的情况下
affected_products = models.ManyToManyField(
Product,
through='ProductVulnerability',
through_fields=("vulnerability", "product")
)https://stackoverflow.com/questions/67051859
复制相似问题