Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从列表中检索具有相同外键的元素?_Python_Django - Fatal编程技术网

Python 如何从列表中检索具有相同外键的元素?

Python 如何从列表中检索具有相同外键的元素?,python,django,Python,Django,我有这两种型号: 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)

我有这两种型号:

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)
我的
请求中有一个城市列表。POST
(作为城市ID的字符串串联):


对于上面列表中的每个
城市id
,都有一个国家/地区的外键。是否有一种简单的方法来验证城市列表是否在同一个国家(即具有相同的
外键
城市/国家
”)?

这将返回
城市列表
中每个城市的国家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)

这将返回
列表城市中每个城市的国家/地区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)

这与执行简单的
distinct()。因此,您可以获取值列表并将其转换为一个集合,该集合的长度应仅为1:

country_set = set(City.objects.filter(id__in=list_cities).values_list('city_country', flat=True))
if len(country_set) == 1:
     #...

这与执行简单的
distinct()。因此,您可以获取值列表并将其转换为一个集合,该集合的长度应仅为1:

country_set = set(City.objects.filter(id__in=list_cities).values_list('city_country', flat=True))
if len(country_set) == 1:
     #...