Python 如何通过多对一选择未与自定义用户配对的用户?

Python 如何通过多对一选择未与自定义用户配对的用户?,python,django,django-models,django-queryset,Python,Django,Django Models,Django Queryset,我有两种型号-WaitingUser和MarkedUserID class WaitingUser( models.Model ): user_id = models.IntegerField() class Meta: db_table = 'waiting_user' class MarkedUserIds( models.Model ): user = models.ForeignKey( WaitingUser ) # a user who wa

我有两种型号-WaitingUser和MarkedUserID

class WaitingUser( models.Model ):
    user_id = models.IntegerField()
    class Meta:
        db_table = 'waiting_user'

class MarkedUserIds( models.Model ):
    user = models.ForeignKey( WaitingUser ) # a user who was marked
    marked_user_id = models.IntegerField() # another user (user_id) who marked the user
    class Meta:
        db_table = 'marked_user_ids'
WaitingUser用于存储要标记的用户。一个用户可以一次性标记另一个用户。如果一个用户被另一个用户标记,则相应的行存在于MarkedUserID中

class WaitingUser( models.Model ):
    user_id = models.IntegerField()
    class Meta:
        db_table = 'waiting_user'

class MarkedUserIds( models.Model ):
    user = models.ForeignKey( WaitingUser ) # a user who was marked
    marked_user_id = models.IntegerField() # another user (user_id) who marked the user
    class Meta:
        db_table = 'marked_user_ids'
我想找到所有没有被特定用户标记的用户(我有该用户的用户id)

相应的SQL查询:

SELECT 
    user_id 
FROM 
    waiting_user 
LIMIT 
    1
WHERE
    user_id NOT IN 
    ( SELECT user_id FROM marked_user_ids WHERE marked_user_id={specific_one_user_id})
AND 
    user_id != {specific_one_user_id}
如何创建相应的Django查询(没有原始SQL)?多谢各位


澄清:如果需要,我可以重新组织模型。

列出您不需要的ID:

excluded_ids = [user.id for user in MarkedUserIds.objects.filter(marked_user_id = {specific_one_user_id})]
然后获取排除这些ID的用户:

WaitingUser.objects.exclude(user_id__in = excluded_ids)
编辑:
在一个查询中:

WaitingUser.objects.exclude(id__in = MarkedUserIds.objects.filter(marked_user_id = {specific_one_user_id}).values_list('id', flat=True))
我可能没有正确理解您的过滤条件


希望有帮助。

不幸的是,这是不正确的。1) 我们不应该选择当前用户(用户\u id!={specific\u one\u user\u id})。2) 我们可以通过一个查询来完成吗?1)ModelManager.exclude()返回一个QuerySet。您的编辑:现在我们从选择中排除当前用户的id。标记的用户ID中对应行不存在的情况如何?你好像忘了。对不起,我帮不上忙:(我不了解你的筛选条件。与SQL相同。:)