很容易通过Django ORM检查项目是否在列表中
User.objects.filter(name__in = [' x',' y'])
逆向方式怎么样。 如果用户有一个字段说他所访问的郊区列表(逗号分隔列表),我们必须检查他是否没有访问过某个特定的郊区。
class User(models.Model):
suburb = models.TextField(_('suburbs'),validators=[validate_comma_separated_integer_list], blank=True)
从shell_plus检索时的数据将是
的这种类型{'suburb': '965,967,969,972' }
想要获得所有未访问过郊区100的用户吗?
答案 0 :(得分:2)
您可以使用Q objects来实现此目的。
startswith_string = str(suburb) + ","
contains_string = "," + str(suburb) + ","
endswith_string = "," + str(suburb)
users = User.objects.filter(
Q(suburb__startswith=startswith_string) | Q(suburb__contains=contains_string) | Q(suburb__endswith=endswith_string),
)
答案 1 :(得分:0)
您可以使用contains
lookup之类的
User.objects.exclude(suburb__contains='100')
如果您使用的是postgres数据库,那么我建议您使用ArrayField而不是逗号分隔值。
答案 2 :(得分:0)
尝试将排除与seq2seq.sequence_loss查找
一起使用User.objects.exclude(suburb__in=['100'])
如果您的输入是{'suburb':'965,967,969,972'},
input = {'suburb': '965,967,969,972' }
input_list = input['suburb'].split(',') # Split the string into list
User.objects.exclude(suburb__in=input_list)