Note that there are some explanatory texts on larger screens.

plurals
  1. POUsing tastypie resource in view
    primarykey
    data
    text
    <p>my first question here :</p> <p>So I'm using tastypie to have api's for my app.</p> <p>I want to be able to use tastypie to render json and then include that in a django view so that I can bootstrap my app's data.</p> <p>There is an example of this in django tastypie cookbook here : <a href="http://django-tastypie.readthedocs.org/en/latest/cookbook.html#using-your-resource-in-regular-views">http://django-tastypie.readthedocs.org/en/latest/cookbook.html#using-your-resource-in-regular-views</a></p> <p>The problem is that I CANNOT get this to work, I've tried variants from simpler to more complex and I just cant get it, here some code for my models :</p> <pre><code>class ChatMessage(models.Model): content = models.TextField() added = models.DateTimeField(auto_now_add=True) author = models.ForeignKey(ChatUser, related_name="messages") chat_session = models.ForeignKey(ChatSession, related_name="messages") answer_to = models.ForeignKey('self', blank=True, null=True) flagged = models.BooleanField(blank=True,default=False) mododeleted = models.BooleanField(blank=True,default=False) mododeleted_by = models.ForeignKey(ChatUser,blank=True,null=True,default=None) mododeleted_at = models.DateTimeField(blank=True,null=True,default=None) [...] class ChatSession (models.Model): title = models.CharField(max_length=200) link_title = models.CharField(max_length=200) description = tinymce_models.HTMLField() date = models.DateTimeField() online = models.BooleanField(default=False) next_session = models.BooleanField(default=False) meps = models.ManyToManyField(ChatMep) uid_newsupdate = models.CharField(max_length=200,blank=True,null=True,default="") [...] </code></pre> <p>and my resources :</p> <pre><code>class ChatMessageResource(MyModelResource): chat_session = fields.ForeignKey(ChatSessionResource, 'chat_session') def renderOne(self,request,pkval): data = self.obj_get(None,pk=pkval) dbundle = self.build_bundle(obj=data,request=request) return self.serialize(None,self.full_dehydrate(dbundle),'application/json') def dehydrate(self, bundle): bundle.data['likes'] = bundle.obj.get_likes() bundle.data['likes_count'] = len(bundle.data['likes']) return bundle class Meta: authentication = Authentication() authorization = Authorization() queryset = ChatMessage.objects.all() resource_name = 'message' fields = ('content', 'added', 'flagged', 'mododeleted','author','answer_to','chat_session') filtering = { 'chat_session': ALL_WITH_RELATIONS, } </code></pre> <p>and my view index :</p> <pre><code>def index(request): cur_sess = get_current_chat_session() data1= ChatMessageResource().renderOne(request,723) return render_to_response('test.html', { 'all_data' : data1 }, context_instance=RequestContext(request)) </code></pre> <p>What I want is my renderOne() function to give me the json of ONE ChatMessageResource And also I'd like a renderAll() function to gice me ALL (or filtered) ChatMessageResources in json.</p> <p>And I want to use tastypie internals, I KNOW i could serialize it by myself but that's not the point..</p> <p>Right now the error is :</p> <pre><code>NoReverseMatch at /live/ Reverse for 'api_dispatch_detail' with arguments '()' and keyword arguments '{'pk': 14L, 'resource_name': 'session'}' not found. </code></pre> <p>I'm just getting crazy, I've been trying for hours.</p> <p>So please, how to get ONE/ALL resource as JSON by code using tastypie in a django view !</p> <p>If It's not clear or I need to clarify, please just ask, thanks</p> <p>Really what I want to do is to be able to get the JSON returned by an API url I created, but from code, not by visiting the url .. So If I have <code>/api/v1/messages/?chat_session=14</code> which return a list of messages, I want to be able to do the same by code (and not by fetching the url with curl or something please).</p> <p>Note : definition of ModelResource.obj_get from <a href="https://github.com/toastdriven/django-tastypie/blob/master/tastypie/resources.py">https://github.com/toastdriven/django-tastypie/blob/master/tastypie/resources.py</a></p> <pre><code>def obj_get(self, request=None, **kwargs): """ A ORM-specific implementation of ``obj_get``. Takes optional ``kwargs``, which are used to narrow the query to find the instance. """ try: base_object_list = self.get_object_list(request).filter(**kwargs) object_list = self.apply_authorization_limits(request, base_object_list) stringified_kwargs = ', '.join(["%s=%s" % (k, v) for k, v in kwargs.items()]) if len(object_list) &lt;= 0: raise self._meta.object_class.DoesNotExist("Couldn't find an instance of '%s' which matched '%s'." % (self._meta.object_class.__name__, stringified_kwargs)) elif len(object_list) &gt; 1: raise MultipleObjectsReturned("More than '%s' matched '%s'." % (self._meta.object_class.__name__, stringified_kwargs)) return object_list[0] except ValueError: raise NotFound("Invalid resource lookup data provided (mismatched type).") </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload