我正在与Django合作,使用GeoIP和django-cities-light。
我们将它用于项目所在的展厅页面。
因此,您可以按类别或按地区过滤这些项目。
北美,亚洲,欧洲..
它运作良好!
但问题是,我被要求添加中东地区。
这是来自陈列室应用程序的views.py中的代码:
class CategoriesRegionsFilterForm(forms.Form):
REGIONS_CHOICES = (
('EU', _('Europe')),
('NA', _('North America')),
('AS', _('Asia')),
('SA', _('South America')),
('AF', _('Africa')),
('OC', _('Oceania')),
('ME', _('Middle East')),
)
categories = forms.MultipleChoiceField(label=_('Categories'),
required=False,
widget=forms.widgets.CheckboxSelectMultiple)
regions = forms.MultipleChoiceField(label=_('Regions'),
required=False,
widget=forms.widgets.CheckboxSelectMultiple,
choices=REGIONS_CHOICES)
first_object = forms.IntegerField(required=False, initial=0)
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request', None)
super(CategoriesRegionsFilterForm, self).__init__(*args, **kwargs)
categories_qs = ProjectCategory.objects.active_translations(get_language())
self.fields['categories'].choices = [(category.pk, category.name)
for category in categories_qs]
如你所见,我只是添加了中东。似乎没有更多的治疗方法了。
但在网站上,会发生什么: 当我在伊朗创建一个测试项目时 - 例如 - 它将显示为亚洲地区。永远不会出现在中东。
如果我为此项目选择埃及,它将显示为非洲区域过滤器。
但它不会出现在中东。
在我的model.py中,以下是管理区域过滤器创建的行:
regions = models.ManyToManyField(Country, verbose_name=_('Country of the project'),
blank=True, null=True,
related_name='regions_showroom_project')
所以我似乎应该手动添加哪个国家在中东?
但是,因为django-cities-light数据来自GeoNames,所以很奇怪。 GeoNames似乎认识到了中东。
有没有人对此有所了解?我绝对迷失在这里。