Python 如何在django countries包中使用国家名称作为默认值而不是代码
我正在使用一个名为的django软件包,该软件包允许我访问世界上的一些国家属性,如国家名称、国家代码、国旗等 似乎默认的似乎是国家代码,我想知道如何能够使用国家名称,而不是默认的国家代码 models.pyPython 如何在django countries包中使用国家名称作为默认值而不是代码,python,django,django-models,django-views,django-countries,Python,Django,Django Models,Django Views,Django Countries,我正在使用一个名为的django软件包,该软件包允许我访问世界上的一些国家属性,如国家名称、国家代码、国旗等 似乎默认的似乎是国家代码,我想知道如何能够使用国家名称,而不是默认的国家代码 models.py from django.db import models from django_countries.fields import CountryField class Product(models.Model): name = models.CharField(max_length
from django.db import models
from django_countries.fields import CountryField
class Product(models.Model):
name = models.CharField(max_length=36)
price = models.PositiveIntegerField()
country = CountryField(blank_label='(select country)')
例如,在我的视图中,我有这样一个代码
def analyse_market(request):
qs = Product.objects.values('country').annotate(
number=Count('pk')
).order_by('country')
result = {
q['country']: q['number']
for q in qs
}
print(result)
context = {"result":result}
return render(request, 'core/analyse-market.html', context)
这将返回如下结果:
{'AD': 3, 'AR': 5, 'BH': 1, 'FR': 1, 'JP': 1, 'NG': 1, 'NL': 1}
在文档中,他们使用了不同的方法,例如country.name、country.code、country.flag,我尝试了country.name,因为它与我需要的内容相关,但在我的视图中使用country.name时,我得到了keyrerror。来自django countries的
CountryField
只是一个有选择的CharField
。在字段上使用值时,只需获取存储在数据库中的实际值即可。你需要把它变成你自己想要的
要在中执行此操作,请执行以下操作:
要在中执行此操作,请执行以下操作:
编辑:如果要从视图中直接传递国家
对象,可以执行以下操作:
from django_countries.fields import Country
result = {
Country(code=q['country']): q['number']
for q in qs
}
注意:也许一个元组列表会更好?i、 e
result = [ (Country(code=q['country']), q['number']) for q in qs]
django国家的CountryField
只是一个带有选项的CharField
。在字段上使用值时,只需获取存储在数据库中的实际值即可。你需要把它变成你自己想要的
要在中执行此操作,请执行以下操作:
要在中执行此操作,请执行以下操作:
编辑:如果要从视图中直接传递国家
对象,可以执行以下操作:
from django_countries.fields import Country
result = {
Country(code=q['country']): q['number']
for q in qs
}
注意:也许一个元组列表会更好?i、 e
result = [ (Country(code=q['country']), q['number']) for q in qs]
您可能需要类似于Product.objects.values('country\u name').annotate(
)的内容来从国家/地区模型获取属性。您能在相关的位置显示models.py代码吗?@AMG.我在尝试您的解决方案后出现此错误,“django.core.exceptions.FieldError:无法将关键字'name'解析为字段。不允许加入'country'”@AlexKim我已编辑了问题并添加了模型。您可能需要类似于Product.objects.values('country_uname')的内容。注释(
若要从国家/地区模型获取属性,请将models.py代码显示在相关位置好吗?@AMG。我在尝试解决方案后出现此错误,“django.core.exceptions.FieldError:无法将关键字“name”解析到字段中。不允许加入“country”@AlexKim我已经编辑了问题并添加了模型。谢谢,先生,它解决了我的问题。我尝试了自己的模板,但我得到了这个“国家名称:编号:3国家名称:编号:5国家名称:编号:1国家名称:编号:1国家名称:编号:1”我注意到国家名称是空的,为什么是空的?如果需要,我如何获得国家的国旗属性that@coderboy您可以使用视图中的代码或模板中的代码。COUNTRY_DICT[q['COUNTRY']]
已将国家代码转换为国家名称,因此如果您将其传递到模板标签get_country
,它将不会向您返回任何结果。哦,我现在更了解了。谢谢先生,它解决了我的问题我尝试了自己的模板,但我得到了这个结果“国家名称:编号:3国家名称:编号:5国家名称:编号:1国家名称:编号:1国家名称:编号:1国家名称:编号:1国家名称:编号:1国家名称:编号:1国家名称:编号:1“我注意到国家名称是空白的,这是为什么?如果需要,我如何获得国家的国旗属性that@coderboy您可以使用视图中的代码或模板中的代码。COUNTRY_DICT[q['COUNTRY']]
已经将国家代码转换为国家名称,因此如果您将其传递到模板标签get_country
它将不会向您返回任何结果。哦,我现在更了解了。