首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过/through_ fields.E339修复django模型中的PEP字段?

如何通过/through_ fields.E339修复django模型中的PEP字段?
EN

Stack Overflow用户
提问于 2021-04-12 10:11:15
回答 1查看 61关注 0票数 0

我正在尝试通过中间模型将漏洞cve模型与产品联系起来,以基于产品/ cve链接/匹配每个漏洞

代码语言:javascript
复制
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")]
代码语言:javascript
复制
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:
EN

回答 1

Stack Overflow用户

发布于 2021-04-12 10:24:44

正如documented和As HINT所建议的那样

through_fields接受二元组(' field1 ',' field2 '),其中field1是定义字段的模型的外键名称,field2是目标模型的外键名称。

所以在你的情况下

代码语言:javascript
复制
affected_products = models.ManyToManyField(
    Product,
    through='ProductVulnerability',
    through_fields=("vulnerability", "product")
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67051859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档