首页 > 解决方案 > 如果它是外键,如何使用过滤器过滤掉数据?

问题描述

我有两个模型:

轮廓模型

class Profile(models.Model):
  idno=models.AutoField(primary_key=True)
  name=models.CharField(max_length=30)
  email=models.CharField(max_length=40)
  username=models.CharField(max_length=30)
  def __str__(self):
    return self.username

连接请求模型

class ConnectRequest(models.Model):
       idno = models.AutoField(primary_key=True)
       sender = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name="sender")
       receiver = models.ForeignKey(Profile,on_delete=models.CASCADE, related_name="receiver")
       def __str__(self):
           return f"{self.sender} to {self.receiver} "

当我试图过滤掉发件人假设为“XYZ”的所有数据时,它在外壳上给了我一个错误

obj=ConnectRequest.objects.filter(sender="XYZ")

“idno 期望一个数字,但得到了”xyz“

我已经尝试了所有这些东西,但它仍然没有工作并给出错误

obj=ConnectRequest.objects.filter(sender.name="XYZ")
obj=ConnectRequest.objects.filter(Profile.name="XYZ")

标签: djangodjango-modelsdjango-viewsdjango-formsdjango-templates

解决方案


你可以试试这个代码片段

from django.db.models import Q
obj=ConnectRequest.objects.filter(Q(sender__name__icontains="XYZ")|Q(sender__username__icontains="XYZ"))

推荐阅读