2011-08-03 17 views
6

Recientemente comencé a usar tastypie para abrir mi API para una posible aplicación de teléfono inteligente.tastypie api no muestra ForeignKey en json resultado

estoy usando Python y Django-2,7-1.1.2

Dos cosas me están confundiendo

1: en la clase EntryResource al llamar al ForeignKey, simplemente llaman el recurso, junto con el resource_name, cuando lo hago de tal manera obtengo el siguiente traceback.

691. assert isinstance(to, basestring), "%s(%r) is invalid. First parameter to ForeignKey must be either a model, a model name, or the string %r" % (self.__class__.__name__, to, RECURSIVE_RELATIONSHIP_CONSTANT) 

Exception Type: AssertionError at /api/v1/activity-stream-item-subject/ 
Exception Value: ForeignKey(<class 'api.resources.UserResource'>) is invalid. First parameter to ForeignKey must be either a model, a model name, or the string 'self' 

2: si cambio EntryResource-user = fields.ForeignKey(UserResource, 'user'), a continuación, funciona muy bien sin un rastreo, sin embargo no puedo ver la información relacionada en la respuesta JSON.

API/resources.py

class UserResource(ModelResource): 
    class Meta: 
     queryset = User.objects.all() 
     resource_name = 'user' 
     excludes = ['email', 'password', 'is_active', 'is_staff', 'is_superuser'] 
     filtering = { 
      'username': ALL, 
     } 

class EntryResource(ModelResource): 
    user = fields.ForeignKey(UserResource, 'user') 

    class Meta: 
     queryset = Entry.objects.all() 
     resource_name = 'entry' 
     authorization = Authorization() 
     filtering = { 
      'user': ALL_WITH_RELATIONS, 
      'pub_date': ['exact', 'lt', 'lte', 'gte', 'gt'], 
     } 

¿Alguna idea?

Respuesta

7

no estoy seguro si entiendo su primer problema, sino de la segunda, que necesitará para especificar que desea que el recurso completo usando:

user = fields.ForeignKey(UserResource, 'user',full=True) 

de lo contrario obtendrá los recursos URI en lugar de los contenidos. (Ref)

también apenas para la referencia, tenga en cuenta que el estado requisitos:

Django 1.2+ (pueden trabajar en Django 1,1)

-2

Si desea mostrar todos los campos de El usuario en el resultado json, debe establecer full=True.

user = fields.ForeignKey(UserResource,user,full=True) 
+0

true no es válido python – josephmisiti

Cuestiones relacionadas