簡體   English   中英

如何通過/through_fields 修復 django 模型中的 PEP fields.E339?

[英]how do I fix PEP fields.E339 in django models through/through_fields?

我正在嘗試通過中間模型將漏洞 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:

正如記錄和提示所建議的那樣

through_fields 接受一個 2 元組 ('field1', 'field2'),其中 field1 是定義 ManyToManyField 的 model 的外鍵名稱,field2 是目標 model 的外鍵名稱。

所以在你的情況下

affected_products = models.ManyToManyField(
    Product,
    through='ProductVulnerability',
    through_fields=("vulnerability", "product")
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM