Django 使用从相关模型筛选的ID列表筛选模型中的数据

Django 使用从相关模型筛选的ID列表筛选模型中的数据,django,django-queryset,django-orm,Django,Django Queryset,Django Orm,我有3个模型,虽然是一对多的关系(两个模型之间),但它们之间的关系很奇怪。现在,我没有办法改变模型结构,只能使用它 型号 class Note(models.Model): user_owner = models.ForeignKey('User',blank=True, null=True,related_name='note_owner') message = models.TextField() created_at = models.DateTimeField(a

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

型号

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 id
用户id
作为输入。响应应包括与此潜在客户id相关的所有
注释
,以及作为输入用户id的
用户/所有者

我试过:

LeadNoteRelation.objects.filter(lead__id = INPUT ID).select_related()
但这并没有给我想要的结果。请帮我拿这个。提前感谢。

您可以使用以下选项进行筛选:

Note.objects.filter(
    leadnoterelation__lead_id=lead_id,
    user_owner_id=user_owner_id
).distinct()
Note.objects.filter(
LeadNoteRelationship\uuuuLead\uID=lead\uID,
用户\所有者\标识=用户\所有者\标识
).distinct()

在这里,您可以分别用lead和user的主键替换lead\u id和user\u owner\u id。可用于避免为每个匹配的
lead\u id
多次获取相同的
Note

By
lead\u Note\u lead\u id
是否使用
leadnote relation
模型中的相关名称?因为尝试此操作会抛出一个
字段错误
。你能帮我更好地理解这个
Note.objects.filter(leadNoteRelationship\uuuuLead\uID=lead id,user\uOwner\uID=user id)。distinct()
对我有用。非常感谢你的邀请idea@vvk24:啊,是的,对不起。固定的。