我的问题基于Django文档中给出的this示例。我的models.py看起来像这样:
class Wrestler(models.Model):
name = CharField(max_length=255)
class AlterEgo(models.Model):
name = CharField(max_length=255)
person = ForeignKey('someapp.Person', )
class Group(models.Model):
name = CharField(max_length=255)
members = models.ManyToManyField('someapp.Person', through='Membership')
class Membership(models.Model):
person= models.ForeignKey('someapp.Person',)
alter_ego = models.ForeignKey('someapp.AlterEgo', blank=True, null=True)
group = models.ForeignKey('someap.Group',)
我的群组列表模板如下所示:
{% for object in object_list %}<tbody>
<tr>
<td><a href="{{object.get_absolute_url}}">{{ object.name }}</a></td>
<td>{{ object.members.all|join:" & " }}</td>
</tr>
</tbody>{% endfor %}
如您所见,我的额外字段是“alter_ego”字段。每个人都可以拥有另一个自我,e。 G。克里斯杰里科曾经作为Moongoose McQueen表演。使用此模板,成员将被列为“Chris Jericho&amp; Richard Ward&amp; ...”。我的问题是我不希望耶利哥被列为耶利哥,但如果给予另一个自我,那就像麦奎因一样。
我想我应该有一个自定义功能取代我的人FK,如果给出另一个自我,但我仍然试图绕过它,因为我对这一切真的是一个菜鸟。
如果有人能指出我正确的方向,我会非常感激。提前致谢。
答案 0 :(得分:0)
从会员资格中删除alter_ego。
更改AlterEgo类并添加related_name:
类AlterEgo(models.Model):
name = CharField(max_length=255)
person = ForeignKey('someapp.Person', related_name = 'alter_ego')
group = ForeignKey('someapp.Group', blank=True, null=True)
在模板中迭代成员:
<td>
{% for member in group.members.all %}
{% if member.alter_ego.group == group }}
{{ member.alter_ego}}
{% else %}
{{ member.name }}
{% endif %}
{% endfor %}
</td>
P.S。您的小任务是从模板中的名称形成字符串,并与&amp;
分开