Django 国家和 TastyPie:获取国家名称
Django-countries and TastyPie: Get country name
我有这样一个模型:
from django.db import models
from django_countries.fields import CountryField
class Location(models.Model):
company = models.CharField(max_length=64)
country = CountryField()
def __unicode__(self):
return self.company
现在我正在使用 TastyPie API。我得到了一个像这样的非常简单的模型(即使我之前用过滤器和字段编辑过它但没有成功):
class LocationResource(ModelResource):
class Meta:
queryset = Location.objects.all()
resource_name = 'location'
它是什么returns:
{"company": "testcompany", "country":"DE" "resource_uri": "/api/location/1/"}
不过,我需要的是国家/地区名称,或者更好的是国家/地区字段中的任何名称。
您可以将 country
的脱水方法添加到您的 LocationResource
def dehydrate_country(self, bundle):
return bundle.obj.country.name
OR
如果您正在使用 DRF 实例化 Country field
就像
from django_countries.serializer_fields import CountryField
country = CountryField(country_dict=True)
在你的 serializer
.
可以从django_countries数据字典中获取名字
from django_countries.data import COUNTRIES
country_name = COUNTRIES[country_code]
在 DRF 的情况下,对序列化程序进行一些调整就可以了
from django_countries.serializer_fields import CountryField
from django_countries.fields import CountryField as ModelCountryField
class CustomCountryMixin(CountryFieldMixin):
"""Custom mixin to serialize country with name instead of country code"""
def to_representation(self, instance):
data = super().to_representation(instance)
for field in instance._meta.fields:
if field.__class__ == ModelCountryField:
if getattr(instance, field.name).name:
data[field.name] = getattr(instance, field.name).name
return data
class StudentSerializer(CustomCountryMixin, serializers.ModelSerializer):
class Meta:
model = Student
fields = ('mobile_number', 'study_destination', 'country_of_residence',
'university', 'study_level', 'course_start_date')
我有这样一个模型:
from django.db import models
from django_countries.fields import CountryField
class Location(models.Model):
company = models.CharField(max_length=64)
country = CountryField()
def __unicode__(self):
return self.company
现在我正在使用 TastyPie API。我得到了一个像这样的非常简单的模型(即使我之前用过滤器和字段编辑过它但没有成功):
class LocationResource(ModelResource):
class Meta:
queryset = Location.objects.all()
resource_name = 'location'
它是什么returns:
{"company": "testcompany", "country":"DE" "resource_uri": "/api/location/1/"}
不过,我需要的是国家/地区名称,或者更好的是国家/地区字段中的任何名称。
您可以将 country
的脱水方法添加到您的 LocationResource
def dehydrate_country(self, bundle):
return bundle.obj.country.name
OR
如果您正在使用 DRF 实例化 Country field
就像
from django_countries.serializer_fields import CountryField
country = CountryField(country_dict=True)
在你的 serializer
.
可以从django_countries数据字典中获取名字
from django_countries.data import COUNTRIES
country_name = COUNTRIES[country_code]
在 DRF 的情况下,对序列化程序进行一些调整就可以了
from django_countries.serializer_fields import CountryField
from django_countries.fields import CountryField as ModelCountryField
class CustomCountryMixin(CountryFieldMixin):
"""Custom mixin to serialize country with name instead of country code"""
def to_representation(self, instance):
data = super().to_representation(instance)
for field in instance._meta.fields:
if field.__class__ == ModelCountryField:
if getattr(instance, field.name).name:
data[field.name] = getattr(instance, field.name).name
return data
class StudentSerializer(CustomCountryMixin, serializers.ModelSerializer):
class Meta:
model = Student
fields = ('mobile_number', 'study_destination', 'country_of_residence',
'university', 'study_level', 'course_start_date')