1

クエリセットは次のとおりです。

researches = Graph.objects.filter(subject=subject_object).exclude(type='infografik').values_list('name', flat=True).distinct()

私がする時:

{% for research in researches %}

私のテンプレートでは、その間のコードは適切な回数実行されますが、たとえば{{ research.name }}機能しません。

オブジェクトの属性にアクセスするにはどうすればよいですか?

ありがとう。

編集:

グラフモデル

name = models.CharField(max_length=100)
research = models.ForeignKey('Research')
explanation = models.TextField(max_length=1000)
path_to_file = models.CharField(max_length=100)
type = models.CharField(max_length=30, choices=type, null=True, blank=True)
subject = models.ManyToManyField(Subject)
thumbnail = models.ImageField(upload_to='thumbnails/', null=True, blank=True)
slug = models.SlugField(max_length=120, unique=True)
4

2 に答える 2

3

ドキュメントから:

各タプルには、values_list() に渡されたそれぞれのフィールドの値が含まれています。

したがって、研究名を印刷するには、次のようにします。

{% for research in researches %}
{{ research  }}
{% endfor %}
于 2013-03-29T11:16:55.257 に答える
1

値のフラットなリストを求めているため、アクセスする属性はありません。すべての属性にアクセスしたい場合は、researches = Graph.objects.filter(subject=subject_object).exclude(type='infografik').distinct()反復可能なクエリセットを返すこのクエリかresearches = Graph.objects.filter(subject=subject_object).exclude(type='infografik').values().distinct()、辞書のリストを返すこのクエリのいずれかを使用します。django のテンプレート言語では、次のように両方の属性にアクセスできます。

{% for research in researches %}
    {{ research.name }}
    {{ research.author }}
    ...
{% endfor %}

個別のオブジェクトも取得するために私が知っている唯一の方法は、生のSQLを使用することです。

researches = Graph.objects.raw('SELECT * FROM appname_graph WHERE subject_id = %s AND type <> %s GROUP BY name', [subject_object.id, 'infografik'])
于 2013-03-29T11:28:38.653 に答える