2 Stimmen

Handhabung verwandter Modelle in Django zur Verwendung in Django-Piston

Ich habe die Einstellungen wie folgt vorgenommen (der Einfachheit halber geändert)

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)

Ich ziehe die Autorendatensätze ab, aber ich möchte nur verwandte Dokumentendatensätze für jeden Autor abrufen, die bestimmten Kriterien entsprechen, z. B. Datum_veröffentlicht und Kategorie.

Ich weiß, der einfache Weg, dies zu tun wäre, um in den Datensätzen als eine Liste von Wörterbüchern mit ziehen Author.objects.values() und durchläuft jeden Datensatz in einer Schleife:

author['documents']=Document.objects.filter(categories__in=[category_list], date_published__year=year)`

Dies wird jedoch für django-piston generiert, und es scheint am glücklichsten zu sein (insbesondere wenn Sie Ihre eigenen Felder definieren!), wenn Sie ein QuerySet-Objekt zurückgeben.

Das mag zum Teil daran liegen, dass ich Änderungen am Basiscode von django-piston vorgenommen habe. Im Grunde genommen ist der aktuelle Version des Codes überschreibt hier die fields Wert. Ich habe diesen Code so geändert, dass ich den fields Wert für einen Handler auf der Grundlage der Anfrage (damit ich mehr Details liefern kann, wenn die Anfrage für eine bestimmte Ressource war).

Ich denke, meine Frage ist dreifach:

  1. Gibt es eine Möglichkeit, die Unterdatensätze eines Datensatzes zu filtern oder irgendwie einzuschränken (d. h. Filter documents für jede author.documents )
  2. Wenn nicht, was ist ein funktionaler Weg, dies zu tun, die auch mit django-Piston funktioniert?
  3. Gibt es eine einfachere, bessere Möglichkeit, das zu tun, was ich versuche (alle Autoren ohne ihre Dokumente anzeigen, wenn keine ID angegeben ist, aber die Unterdatensätze anzeigen, wenn nur ein Autor gefiltert wird)?

Klärung

Okay, nur um klar zu sein, hier ist der Pseudocode, den ich will:

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))

Wenn ich also waren um sie in eine Vorlage zu integrieren, würde dies ohne Änderungen funktionieren:

{% 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 laufen und tatsächlich den Inhalt von documents für jeden Autorendatensatz. Es scheint, dass dies möglich sein sollte, aber vielleicht ist es das nicht?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X