tutorial from framework ejemplo data consumir python django django-models tastypie

python - from - Cómo exponer una propiedad(campo virtual) en un Modelo Django como un campo en un TastyPie ModelResource



get data from api django (2)

Tengo una propiedad en un Modelo Django que me gustaría exponer a través de TastyPie ModelResource.

Mi modelo es

class UserProfile(models.Model): _genderChoices = ((u"M", u"Male"), (u"F", u"Female")) user = Models.OneToOneField(User, editable=False) gender = models.CharField(max_length=2, choices = _genderChoices) def _get_full_name(self): return "%s %s" % (self.user.first_name, self.user.last_name) fullName = property(_get_full_name)

Mi ModelResource es

class UserProfileResource(ModelResource): class Meta: queryset = models.UserProfile.objects.all() authorization = DjangoAuthorization() fields = [''gender'', ''fullName'']

Sin embargo, todo lo que estoy sacando de la sabia api es:

{ gender: ''female'', resource_uri: "/api/v1/userprofile/55/" }

He intentado jugar con la propiedad fields en el ModelResource, pero eso no ha ayudado. Me encantaría entender lo que está pasando aquí.


Debería poder definirlo como un intento de field :

class UserProfileResource(ModelResource): fullname = fields.CharField(attribute=''_get_full_name'', readonly=True) class Meta: queryset = models.UserProfile.objects.all() authorization = DjangoAuthorization() fields = [''gender'',]

Editar

También debe incluir: set readonly=True en su CharField , o TastyPie intentará establecer su valor en la inserción o actualización.


Un ejemplo completo con deshidratado:

class UserResource(ModelResource): fullname = fields.CharField(readonly=True) class Meta: queryset = auth_models.User.objects.all() resource_name = ''user'' def dehydrate_fullname(self, bundle): return u"{first_name} {last_name}".format( first_name=bundle.obj.first_name, last_name=bundle.obj.last_name)