使用从相关模型中过滤的 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 id
和 User 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_id
和 user_owner_id
分别替换为潜在客户和用户的主键。 .distinct()
[Django-doc] 可用于避免每个匹配的 lead_id
多次获取相同的 Note
。
我有 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 id
和 User 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_id
和 user_owner_id
分别替换为潜在客户和用户的主键。 .distinct()
[Django-doc] 可用于避免每个匹配的 lead_id
多次获取相同的 Note
。