1

私はそれらの2つのモデルを持っています:

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' を持っている) かどうかを確認する簡単な方法はありますか?

4

2 に答える 2

1

これにより、 のすべての都市の国 ID のリストが返されlist_citiesます。

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)
于 2013-09-16T10:36:19.520 に答える
0

これは simple を実行するのと同じですが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:
     #...
于 2013-09-16T12:20:09.683 に答える