使用从相关模型中过滤的 ID 列表过滤模型中的数据

Filter data in a model with list of ids filtered from the related model

我有 3 个模型,虽然它们是一对多关系(2 个模型之间),但它们之间的关系很奇怪。现在我无法更改模型结构,只能使用它。

型号

class Note(models.Model):
    user_owner = models.ForeignKey('User',blank=True, null=True,related_name='note_owner')
    message = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    ... ... ...

class SalesLead(models.Model):
    user_owner = models.ForeignKey(User, models.DO_NOTHING, blank=True, null=True)
    status = models.ForeignKey(LeadStatus, models.DO_NOTHING, blank=True, null=True)
    name = models.CharField(max_length=255)
    first_name = models.CharField(max_length=255, blank=True, null=True)
    middle_name = models.CharField(max_length=255, blank=True, null=True)
    last_name = models.CharField(max_length=255, blank=True, null=True)
    ... ... ...

class LeadNoteRelation(models.Model):
    note = models.ForeignKey(Note, models.DO_NOTHING, primary_key=True, related_name = "lead_note")
    lead = models.ForeignKey('SalesLead', models.DO_NOTHING)

    class Meta:
        unique_together = (('note', 'lead'),)

我正在尝试编写一个基于函数的视图,它将 SalesLead idUser id 作为输入。响应应包括与此潜在客户 ID 相关的所有 Notes 和作为输入用户 ID

user_owner

我试过了:

LeadNoteRelation.objects.filter(lead__id = INPUT ID).select_related()

但这并没有给我想要的结果。请帮我解决这个问题。提前致谢。

您可以过滤:

Note.objects.filter(
    leadnoterelation__lead_id=<i>lead_id</i>,
    user_owner_id=<i>user_owner_id</i>
).distinct()

lead_iduser_owner_id 分别替换为潜在客户和用户的主键。 .distinct() [Django-doc] 可用于避免每个匹配的 lead_id 多次获取相同的 Note