同一模型的交互实例策略

时间:2014-03-06 14:17:25

标签: python django django-models django-views

想象一下,你有一个如下所示的模型。在每个音乐家的页面上,您想要显示具有相同座席的其他音乐家。

class Musician(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    agent = models.ForeignKey(Agent)

此外,您希望运行一种方法,以便在音乐家的页面上显示。该方法计算出当前实例与共享同一代理的所有相关实例之间的相似性。

def similarity(self, other_instance)
    ...
    return similarity

因此,模板需要以下内容:

  1. 现任音乐家的详情
  2. 相关音乐家的详细信息及其与当前音乐家的相似性
  3. 是否有Django批准的方法来解决这个问题?对这样的问题使用基于类的视图是否有意义?

1 个答案:

答案 0 :(得分:0)

要“显示具有相同座席的其他音乐家。”,请使用此查询musician.agent.musician_set

def detail(request, musician_id):
    musician = get_object_or_404(Musician, pk=musician_id)
    return render_to_response('musician/detail.html', {'musician': musician})

在你的模板中:

<h1>{{ musician.first_name }} {{ musician.last_name }}</h1>

相关:

{% for related_musician in musician.agent.musician_set %}
   #show related musician details
   {{ related_musician.first_name }}
{% endfor %}