【问题标题】:Django query filter, return object if attr delete is false (i.e if it hasn't been deleted)Django 查询过滤器,如果 attr delete 为假则返回对象(即如果它没有被删除)
【发布时间】:2025-12-16 07:00:02
【问题描述】:

我有以下:

PHONE_CHOICES = (
    ('home', 'Home'),
    ('home2', 'Home 2'),
    ('mobi', 'Mobile'),
    ('mobi2', 'Mobile 2'),
    ('work', 'Work'),
    ('work2', 'Work 2'),
)

phones = []
for k, v in PHONE_CHOICES:
    try:
        phones.append(ClientPhone.objects.filter(client=clientKEY, phone_type=k).latest('id'))
    except ClientPhone.DoesNotExist:
        pass

我在ClientPhone 中还有一个名为deleted 的属性。我只希望它在deleted 为空时将最近发送的电话附加到phones 列表中。

【问题讨论】:

    标签: python django django-queryset


    【解决方案1】:

    很难说出你在问什么,但我认为你想要这样的东西:

    phones = []
    for k, v in PHONE_CHOICES:
        try:
            current = ClientPhone.objects.filter(client=clientKEY, phone_type=k)
            if current.deleted is None:
                phones.append(current.latest('id'))
        except ClientPhone.DoesNotExist:
            pass
    

    【讨论】:

    • 谢谢,正是我想要的! Python 有时可以帮助压缩通常在 PHP 等语言中冗长的东西,我只是想知道这是否是其中一种情况