如何从'ValuesListQuerySet'中删除值?在django?

时间:2015-03-12 04:44:01

标签: python django

在django中,我使用的是选择字段中查询返回的值列表。如果用户已经提交了任何值,那么我不想在选择字段中显示该值。因此,我想从ValuesListQuerySet中删除值。

或者是否有其他解决方案来实现这一目标?

1 个答案:

答案 0 :(得分:1)

假设您有一个模型设备,该设备已分配给模型用户。新设备应该只能获得没有任何设备的用户。 因此,我们希望排除您选择字段中已有设备的用户:

User.objects.exclude(pk__in=Device.objects.values_list('user', flat=True).distinct())

内部查询仅获取设备用户字段的不同值。我们使用该主键列表排除外部查询中的所有用户。

请注意,每次创建此类表单时都必须重新评估此查询。如果您只在表单字段定义中执行一次,则在创建新记录后不会更新它。看看如何做到这一点:https://stackoverflow.com/a/3420588/640916