2011-08-03 11 views
6

Kısa bir süre önce potansiyel bir akıllı telefon uygulaması için api açmak için tastypie kullanmaya başladım.json sonucunda ForeignKey gösterilmiyor tattypie api

kullanıyorum piton-2.7 ve Django-1.1.2

İki şey beni kafa karıştırıcı

1 gibidir: EntryResource sınıfta ForeignKey çağrılırken, onlar sadece birlikte kaynak çağrı kaynak_adı, böyle bir şekilde yaptığımda aşağıdaki geri dönüşümü alırım.

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' 
: Ben EntryResource user = fields.ForeignKey(UserResource, 'user') değiştirmek, o zaman ancak JSON yanıt olarak ilgili bilgileri göremez, bir traceback olmadan iyi çalışır.

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'], 
     } 

bir fikir?

cevap

7

Senin için ilk sorunu anlamak emin değilim, ama ikinci bir hakkında, kullandığınız tam kaynak istiyorum belirtmek gerekir:

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

aksi takdirde kaynak URI alırsınız içeriği yerine. Eğer tüm alanlarını görüntülemek istiyorsanız

Django 1.2 ve üzeri (Django 1.1 üzerinde çalışmak etsin)

-2

: sadece referans için de (Ref)

, gereksinimler devlet olduğunu akılda tutmak Kullanıcı json sonucunda, full=True'u ayarlamanız gerekir.

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

true geçerli değil python – josephmisiti