如何对多个外键进行排除Django查询

Tjo*_*rie 3 python django

我的模型示例:

class Thing(models.Model):

    alpha = models.ForeignKey('auth.User', on_delete=models.CASCADE,
                             related_name='alpha_thing')

    beta = models.ForeignKey('auth.User', on_delete=models.CASCADE,
                               related_name='beta_thing')
    assigned_at = models.DateTimeField(
        _('assigned at'),
        null=True,
        help_text=_('Assigned at this date'))
Run Code Online (Sandbox Code Playgroud)

我想查询没有assigned_at日期的事物的所有用户,即他们可以拥有其他事物,但是应该设置日期。

我试过了:

return User.objects.exclude(
    alpha_thing__assigned_at__isnull=True
).exclude(
    beta_thing__assigned_at__isnull=True
).all()
Run Code Online (Sandbox Code Playgroud)

但是结果为空(事物表为空,所以我不确定它是否与联接有关?)。

JPG*_*JPG 6

那这个呢,

from django.db.models import Q

User.objects.filter(Q(alpha_thing__assigned_at__isnull=False) | Q(beta_thing__assigned_at__isnull=False)).distinct()
Run Code Online (Sandbox Code Playgroud)

屏幕截图

1.身份验证模型结构- User 验证模型

2.事物模型 事物模型数据