muliple queryset result

22 views
Skip to first unread message

Soumen Khatua

unread,
Jan 9, 2021, 1:01:33 PM1/9/21
to django...@googlegroups.com
Hi Folks,

Actually I have one Primary Table called CustomUser and I'm extending this model as Foreign Key in UserContactDetails model. So now basically one user have multiple contact details. But whenever I'm applying filter on Primary Table field as well as Foreign Key table field, this queryset is returnning  multiple Object inside queryset, like If my ContactDetails have 3 numbers of record for a user then it's returning the same record 3 number of times inside queryset, can you guys tell me, How can I solve this problem? I almost spend three hours on it, please help me.

models.py
----------------
class CustomUser(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(_('email address'), unique=True)
    company_name = models.CharField(max_length = 150)
    sap_code = models.CharField(max_length = 150)
    is_staff = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)
    date_joined = models.DateTimeField(default=timezone.now)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    objects = CustomUserManager()

class UserContactDetails(models.Model):
user_details = models.ForeignKey(CustomUser,
related_name = 'usercontactdetailes',
related_query_name = 'usercontactdetaies',
on_delete = models.CASCADE)
address = models.CharField(max_length = 150)
mobile_no = models.CharField(max_length = 150)
primary_contact = models.BooleanField(default = False)



views.py
--------------------
query = request.GET.get('param')
 user_data = CustomUser.objects.filter(
       Q(usercontactdetaies__address = query)|
       Q(usercontactdetaies__mobile_no = query)|
       Q(company_name__exact = query) |
       Q(sap_code__exact = query)
 )


 <QuerySet [<CustomUser: soum...@gmail.com>, <CustomUser: soum...@gmail.com>, <CustomUser: soum...@gmail.com>]>

Instead of returnning one matched object inside queryset it's returnning three matched object because I have three contact details for this user.


Thank you in advance

Regards,
Soumen Khatua




Naresh Jonnala

unread,
Jan 16, 2021, 4:29:11 AM1/16/21
to Django users

Hi,

'OR' operator kills expected logic.

try removing 'or' operator.


For best practice, prepare raw sql and execute,untill you get logic. then update django query set.
Reply all
Reply to author
Forward
0 new messages