django - Tastypie - Linking to a "ForeignKey" -


i have 2 legacy models listed below. library.libtype_id effectively foreign key librarytype when libtype_id > 0. want represent foreignkey resource in tastypie when condition met.

can me out? have seen this i'm not sure it's same thing? much!!

# models.py class librarytype(models.model):     id = models.autofield(primary_key=true)     name = models.charfield(max_length=96)  class library(models.model):     id = models.autofield(primary_key=true)     name = models.charfield(max_length=255)     project = models.foreignkey('project.project', db_column='parent')     libtype_id = models.integerfield(db_column='libtypeid') 

here api.py

class librarytyperesource(modelresource):      class meta:         queryset = librarytype.objects.all()         resource_name = 'library_type'  class libraryresource(modelresource):     project = fields.foreignkey(projectresource, 'project')     libtype = fields.foreignkey(librarytyperesource, 'libtype_id' )      class meta:         queryset = library.objects.all()         resource_name = 'library'         exclude = ['libtype_id']      def dehydrate_libtype(self, bundle):         if getattr(bundle.obj, 'libtype_id', none) != 0:             return librarytyperesource.get_detail(id=bundle.obj.libtype_id) 

when i'm getting following error on http://0.0.0.0:8001/api/v1/library/?format=json

"error_message": "'long' object has no attribute 'pk'", 

shouldn't

libtype = fields.foreignkey(librarytyperesource, 'libtype_id' ) 

be

libtype = fields.foreignkey(librarytyperesource, 'libtype' ) 

(without '_id')

i believe handing field int , attempting pk it.

update:

missed libtype_id integerfield, not foreignkey (whole point of question)

personally add method library retrieve librarytype object. way have access librarytype library , don't have override dehydrate methods.

class library(models.model):     # ... other fields     libtype_id = models.integerfield(db_column='libtypeid')      def get_libtype(self):         return librarytype.objects.get(id=self.libtype_id) 

.

class libraryresource(modelresource):     libtype = fields.foreignkey(librarytyperesource, 'get_libtype') 

Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -