私はそのようにセットアップしました(簡単にするために変更しました)
class Author(models.Model)
name = models.CharField(max_length=100)
...
class Document(models.Model):
title = models.CharField(max_length=200)
content - models.TextField()
author = models.ForeignKey("Author", related_name="documents")
date_published = models.DateTimeField()
categories = models.ManyToManyField("Category")
class Category(models.Model):
name = models.CharField(max_length=100)
Author レコードを取得していますが、特定の条件 (date_published とカテゴリなど) に一致する各作成者の関連ドキュメント レコードのみを取得したいと考えています。
これを行う簡単な方法は、 を使用してレコードを辞書のリストとしてAuthor.objects.values()
取り込み、各レコードをループして実行することです。
author['documents']=Document.objects.filter(categories__in=[category_list], date_published__year=year)`
ただし、これは django-piston 用に生成されたものであり、QuerySet オブジェクトを返すと (特に、独自のフィールドを定義している場合は!) 一番うまくいくようです。
これの一部は、ベースの django-piston コードに変更を加えたためかもしれません。基本的に、ここのコードの現在のバージョンは値を上書きしfields
ます。このコードを変更fields
して、リクエストに基づいて Handler の値を変更できるようにしました (そのため、リクエストが特定のリソースに対するものである場合に詳細を提供できます)。
したがって、私の質問は3つあると思います。
documents
レコードのサブレコードをフィルタリングまたは何らかの方法で制限する方法はありますか (つまり、各レコードをフィルタリングするauthor.documents
)- そうでない場合、django-pistonでも機能するこれを行う機能的な方法は何ですか?
- 私がやろうとしていることを行うためのより簡単でより良い方法はありますか (ID が指定されていない場合はドキュメントなしですべての作成者を表示しますが、1 人の作成者のみにフィルタリングする場合はサブレコードを表示します)?
明確化
さて、明確にするために、ここに私が欲しい疑似コードがあります:
def perhaps_impossible_view(request, categories=None, year=None):
authors = Author.objects.all()
authors.something_magical_happens_to_documents(category__in=[categories], date_published__year=year)
return render_to_response('blar.html', locals(), RequestContext(request))
テンプレートに入れると、これは変更なしで機能します。
{% for a in authors %}
{% for d in authors.documents.all %}
{{ d.title }} is almost certainly in one of these categories: {{ categories }} and was absolutely published in {{ year }}. If not, .something_magical_happens_to_documents didn't work.
{% endfor %}
{% endfor %}
something_magical_happens_to_documents
documents
を実行して、各著者レコードの内容を実際に変更する必要があります。これは可能であるように思われますが、おそらくそうではありませんか?