我有这两个型号:
class Country(models.Model):
country_id = models.CharField(max_length=30,primary_key=True)
country_name = models.CharField(max_length=255)
class City(models.Model):
city_id = models.CharField(max_length=30,primary_key=True)
city_name = models.CharField(max_length=255)
city_country = models.ForeignKey(Country)
我的request.POST
中有一个城市列表(作为城市ID的字符串连接):
list_cities = concat_ids.split(',')
对于上面列表中的每个city_id
,都有一个国家/地区的外键。是否有一种简单的方法来验证城市列表是否在同一个国家/地区(即具有相同的ForeignKey
'city_country
')?
答案 0 :(得分:1)
这将返回list_cities
中每个城市的国家/地区ID列表:
country_ids = City.objects.values_list('city_country_id', flat=True).filter(id__in=list_cities)
然后,检查列表中的所有元素是否相同:
country_ids.count(country_ids[0]) == len(country_ids)
答案 1 :(得分:0)
这与执行简单的distinct().count()
相同,但distinct
在每个数据库中都不起作用(请参阅distinct()中的注释)。因此,您可以获取值列表并将其转换为一个集合,该集合的长度应该只有1:
country_set = set(City.objects.filter(id__in=list_cities).values_list('city_country', flat=True))
if len(country_set) == 1:
#...