程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了包括在Django Tastypie API子资源大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决包括在Django Tastypie API子资源?

开发过程中遇到包括在Django Tastypie API子资源的问题如何解决?下面主要结合日常开发的经验,给出你关于包括在Django Tastypie API子资源的解决方法建议,希望对你解决包括在Django Tastypie API子资源有所启发或帮助;

您正在寻找相关领域:http://django-tastypie.readthedocs.org/en/latest/fIElds.HTML#relationship- fIElds

解决方法

我打算使用Django和Tastypie一个网站的REST API,和我有一个艰难的时间搞清楚了“正确”的方式包括在返回的资源子资源。

作为一个沙箱中,我做了一个小的应用程序了票务模型和TicketComment模型,其中的意见属于一票。我看着嵌套资源(http://django-
tastypie.readthedocs.org/en/latest/cookbook.html#nested-
resources)的Tastypie食谱配方,但我有一个很难理解为什么我应该做的。以下用途django.forms.models.model_to_Dict()的代码,以获得注释到票,但我想必须有一个“疑难杂症”这里的某个地方。

是否有一个原因,@R_673_9190@我现在正在做什么?此外,有没有这种更清洁,感觉比模式什么的食谱上市?

型号如下:

# tickets/models.py

from django.db import models

class Ticket(models.Model):
    title = models.CharField(max_length=200)
    create_ts = models.datetiR_243_11845@eField(auto_now_add=TruE)
    submitter_email = models.EmailField()
    PRIORITY_CHOICES = (
        ('H','High'),('M','Medium'),('L','Low'),)
    priority = models.CharField(max_length=1,choices=PRIORITY_CHOICES)
    description = models.TextField()
    STATUS_CHOICES = (
        ('NEW','New & Unclaimed'),('WIP','Work In Progress'),('RES','Resolved'),('CLS','Closed'),)
    status = models.CharField(max_length=3,choices=STATUS_CHOICES)

    def __unicode__(self):
        return "<Ticket:%d:%s>" % (self.id,self.title,)

class TicketComment(models.Model):
    ticket = models.ForeignKey(Ticket)
    comment_ts = models.datetiR_243_11845@eField(auto_now_add=TruE)
    commenter_email = models.EmailField()
    comment = models.TextField()

    def __unicode__(self):
        return "<TicketComment:%d:%d>" % (self.ticket.id,self.id,)

资源如下:

# tickets/api.py

from tastypie import fields
from tastypie.resources import Modelresource
from tickets.models import Ticket,TicketComment
from django.forms.models import model_to_Dict

class Ticketresource(ModelresourcE):

    class Meta:
        queryset = Ticket.objects.all()
        resource_name = 'ticket'

    def dehydrate(self,bundlE):
        comments = TicketComment.objects.filter(ticket=bundle.data['id'])
        bundle.data['comments'] = [model_to_Dict(C) for c in comments]
        return bundle

class TicketCommentresource(ModelresourcE):
    ticket = fields.ForeignKey(Ticketresource,'ticket')

    class Meta:
        queryset = TicketComment.objects.all()
        resource_name = 'comment'

输出如下:

{
   comments: [
        {
            comment: "This is the first comment.",commenter_email: "me@example.com",id: 1,ticket: 1
        },{
            comment: "This is the second comment.",id: 2,ticket: 1
        }
    ],create_ts: "2011-10-17T15:55:11.372000",description: "This is the first ticket.",id: "1",priority: "M",resource_uri: "/api/v1/ticket/1/",status: "NEW",submitter_email: "me@example.com",title: "First Ticket"
}

大佬总结

以上是大佬教程为你收集整理的包括在Django Tastypie API子资源全部内容,希望文章能够帮你解决包括在Django Tastypie API子资源所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。