List of manageable countries for your Django projects
A Django application who contains world country list that can be displayed with a priority order.
Usefull for forms or for models which needs a country list ordered.
First install the package:
pip install emencia.django.countries
Add it to your installed Django apps in settings:
INSTALLED_APPS = ( ... 'emencia.django.countries', ... )
Finally run the Django commands migrate to install app database tables, this will also fill Country model with initial datas for countries.
By default when the fixture is loaded all the countries a leveled to 0, the default and displayed by alphabetical order.
>>> from emencia.django.countries.models import Country >>> Country.objects.all() [<Country: Afghanistan>, <Country: Albania>, <Country: Algeria>, '...(remaining elements truncated)...']
So if you don’t want to display Afghanistan as the first country of your list, you have a set a high value to the level attribute for all the countries you want.
Now if you want to retrieve your country list ordered do this:
>>> france = Country.objects.get(iso='FR') >>> france.level = 100 >>> france.save() >>> Country.objects.all() [<Country: France>, <Country: Afghanistan>, <Country: Albania>, '...(remaining elements truncated)...']
But if you only want a short list of countries with the level attribute set, you can do this:
>>> Country.objects.leveled() [<Country: France>]
This will return only the countries with a level value different than 0.
Sometimes it can be usefull to have all the countries in the context for rendering templates, so a template context processor is provided.
>>> TEMPLATE_CONTEXT_PROCESSORS = ( ... # Your template context processors ... 'emencia.django.countries.context_processors.countries', ... )
This template context processor, provides 2 variables in the context :
- Fixed bad path for HISTORY.rst in setup.py;
- Ensure compatibility with Django>=1.7:
- Added compatibility support in model manager with get_queryset method;
- Added Django migration;
- Now loading initial data fixtures from a data migration since Django>=1.7 don’t do it automatically anymore;
- Update setup.py for better package classifier and packages infos;
- Fix package MANIFEST for missing rule for fixture data file;
- First release as a package;