art*_*.mu 6 django many-to-many foreign-keys django-templates
我有以下模型结构:
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']
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一段时间来获取我的模板中的位置数据(包括在AssocProjectMedia中),具体如下:
在我看来 :
project = get_object_or_404(Project, slug=project_slug)
return render(request, 'projects/projects_details.html', {"project":project})
Run Code Online (Sandbox Code Playgroud)
在我的模板中:
{% for media in project.media_set.all %}
...
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,什么也没出现.
如果相反我写:
{% for media in project.media.all %}
...
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
我将获取我的媒体数据,但不包括直通模型中包含的数据(AssocProjectMedia).
如果有人知道如何做到这一点......
kar*_*ikr 13
试试这个:
{% for assoc_media in project.assocprojectmedia_set.all %}
{{assoc_media.position}}
{# or whatever field #}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3739 次 |
| 最近记录: |