如何为django-cities-light country model增加资金?

Bab*_*abu 6 python django timezone countries django-countries

我使用Django的城市光(打火机版Django的城市)和Django 1.8.x. 它定义了Country,Region/State和City的抽象模型,以便我们可以扩展和添加自定义字段.例如,我们可以通过编写一个post_import信号处理程序说明添加时区城市在这里.

同样,我需要将字段添加capital到每个国家/地区.我对GeoDjango并不熟悉,我知道django-citiesapp的Country有资本领域.

小智 5

您需要设置自定义国家/地区模型.假设你有一个带有models.py的应用程序'mygeonames':

import cities_light

from django.db import models

from cities_light.settings import ICountry
from cities_light.receivers import connect_default_signals
from cities_light.abstract_models import (AbstractCountry, AbstractRegion,
    AbstractCity)

class Country(AbstractCountry):
    capital = models.CharField(max_length=50)
connect_default_signals(Country)


class Region(AbstractRegion):
    pass
connect_default_signals(Region)


class City(AbstractCity):
    pass
connect_default_signals(City)


def process_country_import(sender, instance, items, **kwargs):
    instance.capital = items[ICountry.capital]

cities_light.signals.country_items_post_import.connect(process_country_import)
Run Code Online (Sandbox Code Playgroud)

然后在settings.py中指定CITIES_LIGHT_APP_NAME = 'mygeonames',并将两个应用的'cities_light'和'mygeonames'放在一起INSTALLED_APPS

之后,您可以迁移数据库并运行 ./manage.py cities_light

最后你应该得到这样的东西:

In [1]: from mygeonames.models import Country
In [2]: cc = Country.objects.all()
In [3]: cc[0].capital
Out[3]: u'Paris'
Run Code Online (Sandbox Code Playgroud)

但您可能希望链接到Cities表.