diff --git a/ReferenceDataApp/admin.py b/ReferenceDataApp/admin.py index 28a08f9..240e988 100644 --- a/ReferenceDataApp/admin.py +++ b/ReferenceDataApp/admin.py @@ -19,6 +19,7 @@ class Admin_City(Admin_Trans_BaseModel): 'enable', 'area_id', 'parsing_finished_DT', 'order', 'modifiedDT', 'createDT'] search_fields = ['id', 'name_en', 'name_ru', 'country__name'] + list_filter = ['country'] admin.site.register(City, Admin_City) class Admin_Airport(Admin_Trans_BaseModel): @@ -29,4 +30,5 @@ class Admin_Airport(Admin_Trans_BaseModel): 'enable', 'area_id', 'parsing_finished_DT', 'order', 'modifiedDT', 'createDT'] search_fields = ['id', 'name_en', 'name_ru', 'city__name', 'city__country__name', 'iata_code', 'icao_code', 'international_name'] + list_filter = ['city__country'] admin.site.register(Airport, Admin_Airport) \ No newline at end of file diff --git a/ReferenceDataApp/funcs.py b/ReferenceDataApp/funcs.py index 6e4a15c..be2f6f1 100644 --- a/ReferenceDataApp/funcs.py +++ b/ReferenceDataApp/funcs.py @@ -178,8 +178,6 @@ def parse_data(): kwargs = {} if city_Dict['name:en']: kwargs.update({'name_en': city_Dict['name:en']}) - if city_Dict['name:ru']: - kwargs.update({'name_ru': city_Dict['name:ru']}) if country: kwargs.update({'country': country}) @@ -189,27 +187,36 @@ def parse_data(): except City.DoesNotExist: print(f' - {city_Dict["name:en"]} не найдена в БД > добавляем') except Exception as e: - print(f'error = {str(e)}') + cities = City.objects.filter(**kwargs) + if cities: + city = cities[0] + cities.exclude(id=city.id).delete() + else: + print(f'error = {str(e)}') + + # собираем данные + city_kwargs = { + 'country': country, + + # 'name_ru': city_Dict['name:ru'], + # 'name_en': city_Dict['name:en'], + + 'geo_lat': str(city_Dict['@lat']), + 'geo_lon': str(city_Dict['@lon']), + } + + if city_Dict['name:ru']: + kwargs.update({'name_ru': city_Dict['name:ru']}) + + city_kwargs.update(kwargs) + + if 'area_id' in city_Dict: + city_kwargs.update({'area_id': city_Dict['area_id']}) if not city: - - city_kwargs = { - 'country': country, - - # 'name_ru': city_Dict['name:ru'], - # 'name_en': city_Dict['name:en'], - - 'geo_lat': str(city_Dict['@lat']), - 'geo_lon': str(city_Dict['@lon']), - } - - city_kwargs.update(kwargs) - - if 'area_id' in city_Dict: - city_kwargs.update({'area_id': city_Dict['area_id']}) - city = City.objects.create(**city_kwargs) - + else: + City.objects.filter(id=city.id).update(**city_kwargs) if 'airports' in city_Dict: