How do I bring in the information from another model?
I have two models Article
, and ArticleBody
Article containing the main info and ArticleBody containing a loop of body and image information
class Article(models.Model):
author = models.ForeignKey(User)
title = models.CharField(max_length=100)
excerpt = models.CharField(max_length=140, null=True, blank=True, help_text='A description no longer than 140 characters that explains what the article is about, important for SEO')
category = models.ManyToManyField(Category)
date_published = models.DateTimeField()
slug = models.SlugField(null=True)
status = models.CharField(choices=STATUS, max_length=2, def开发者_JAVA技巧ault='DR')
tags = TagField(default='', null=True, blank=True, help_text='Just add a comma between the tags i.e. "My very important name, Hunting, Scope, Rifle"')
source_name = models.CharField(default='', blank=True, null=True, help_text='Outdoor Magazine', max_length=100)
source_url = models.URLField(verify_exists=False, max_length=200, null=True, blank=True, help_text='http://www.source.com/2011/01/long-name/')
class ArticleBody(ImageModel):
article = models.ForeignKey(Article)
body = models.TextField(verbose_name='', blank=True, null=True)
image = models.ImageField(storage=cloudfiles_storage, upload_to='articles', default='avatar-blank.jpg', verbose_name='', blank=True, null=True)
caption = models.CharField(max_length=80, null=True, blank=True)
In my api resources.py file I am trying to get the ArticleBody information into my NewsResource...
This is what I have so far.
class NewsBodyResource(ModelResource):
class Meta:
queryset = ArticleBody.objects.all()
resource_name = 'article_body'
class NewsResource(ModelResource):
class Meta:
queryset = Article.objects.filter(status='PU', date_published__lt=datetime.datetime.now).order_by('-date_published')
resource_name = 'news'
What is the correct TastyPIE way, of making changes so I can get a loop of ArticleBody
into my NewsResource
?
class NewsBodyResource(ModelResource):
class Meta:
queryset = ArticleBody.objects.all()
resource_name = 'article_body'
class NewsResource(ModelResource):
newsbodies = fields.ToManyField('yourapp.api.resources.NewsBodyResource', 'articlebody_set', full=True)
class Meta:
queryset = Article.objects.filter(status='PU', date_published__lt=datetime.datetime.now).order_by('-date_published')
resource_name = 'news'
The parameters to ToManyField
represent the following respectively:
project-relative import path to the resource representing the set
the name of field if it's on the parent model or the
related_name
attribute of the field if it's on the child modelwhether or not to embed the full data of each child into the feed (True) or just resource links to each child (False)
精彩评论