6
我有以下型號結構:Django的 - 通過多對多額外字段訪問模板
class Project(models.Model):
title = models.CharField(max_length = 100)
publish = models.BooleanField()
cover = models.ForeignKey(GenericMedia, related_name='+')
media = models.ManyToManyField(GenericMedia, through='AssocProjectMedia')
credits = models.ManyToManyField(AssocTitleName)
class GenericMedia(models.Model):
limit = models.Q(model = 'Image') | models.Q(model = 'Other')
content_type = models.ForeignKey(ContentType, limit_choices_to = limit)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
def __unicode__(self):
return u"%s" % os.path.basename(self.content_object.url.name)
def instance(self):
return self.content_object.__class__.__name__
class AssocProjectMedia(models.Model):
project = models.ForeignKey(Project)
media = models.ForeignKey(GenericMedia)
position = models.PositiveSmallIntegerField()
grid_size = models.PositiveSmallIntegerField(null = True, blank = True)
class Meta:
ordering = ['position']
我一直在嘗試了一段時間,以獲得位置數據(包括AssocProjectMedia)我用下面的模板:
project = get_object_or_404(Project, slug=project_slug)
return render(request, 'projects/projects_details.html', {"project":project})
在我的模板
:
在我看來但是這不起作用,沒有出現。
如果不是我寫的:
{% for media in project.media.all %}
...
{% endfor %}
我會得到我的媒體數據,但在通過模型(AssocProjectMedia)不包含一個。
如果任何人有如何做到這一點......一個想法
哦,這是工作的感謝!是否有可能改變'通過'關係的related_name? –
是否有可能得到只有一個基於一些過濾器而不是assocprojectmedia_set.all()模板中的行?例如,我想獲得項目= xx,media = xx的位置 – Kevin