我正在尝试使用其相关的图像字段序列化软件模型。图像是指带有外键的软件模型,当我序列化软件模型时,我希望它也返回图像或图像路径。我无法在软件模型上创建图像字段,因为多个图像将与之相关。我将如何序列化由外键引用的模型及其相关模型?
class Software(models.Model):
"""
Base model for listings
"""
SOFTWARE_TYPE = (
('R', 'Retail'),
('H', 'Hospitality'),
)
objects = SoftwareManager()
slug = models.SlugField(unique=True,blank=True, null=True)
submitted_by = models.ManyToManyField(User, blank=True, null=True)
title = models.CharField(max_length=120, blank=True, null=True)
developer = models.CharField(max_length=120, blank=True, null=True)
address = models.CharField(max_length=120, blank=True, null=True)
city = models.CharField(max_length=60, blank=True, null=True)
state = models.CharField(max_length=60, blank=True, null=True)
zipcode = models.CharField(max_length=5, blank=True, null=True)
description = models.TextField(blank=True, null=True)
objects = models.GeoManager()
rating = RatingField(range=5,weight=5,can_change_vote=True)
business_size = models.ManyToManyField("BusinessSize", related_name="software-business-size")
review = generic.GenericRelation("Review")
def __unicode__(self):
#return "%s %s %s"%(self.title, self.point.x, self.point.y)
return "%s"%(self.title)
@models.permalink
def get_absolute_url(self):
return ('software-detail', (),
{
'slug' :self.slug,
})
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.title)
super(Software, self).save(*args, **kwargs)
def natural_key(self):
return (self.title, self.developer)
class Meta:
unique_together = (('title', 'developer'),)
class SoftwareImage(models.Model):
software = models.ForeignKey(Software, related_name="softwareimages")
image = models.ImageField(upload_to='software/%Y/%m/%d', default='static/img/no-thumb.jpg', null=True, blank=True)
视图.py
def software_list_ajax_all(request):
result = Software.objects.all().select_related()
result = serializers.serialize('json', result, relations=('software',), extras=('__unicode__','get_absolute_url') )
return HttpResponse(result, content_type="application/json")
json响应
1: Object
extras: Object
__unicode__: "test "
get_absolute_url: "/software/test/"
__proto__: Object
fields: Object
address: "test "
business_size: Array[1]
city: "test"
description: ""
developer: "test"
rating_score: 0
rating_votes: 0
slug: "test"
state: "CA "
submitted_by: Array[0]
title: "Comcash "
zipcode: "test"
__proto__: Object
model: "softwareapp.software"
pk: 3