2009-06-16 3 views
0

Ich habe ein Modell, das eine Position in einem Unternehmen darstellt:Allgemeine Ansichten von der object_id oder dem übergeordneten Objekt

class Position(models.Model): 
    preferred_q = ForeignKey("Qualifications", blank=True, null=True, related_name="pref") 
    base_q = ForeignKey("Qualifications", blank=True, null=True, related_name="base") 

    #[...] 

Es hat zwei „innere Objekte“, die Mindestqualifikationen darstellen, und „bevorzugte“ Qualifikationen für die Position.

Ich habe eine generische Ansicht eingerichtet, um eine Position Instanz zu bearbeiten/anzuzeigen. Innerhalb dieser Seite habe ich einen Link, der zu einer anderen Seite führt, wo der Benutzer jeden Qualifizierungstyp bearbeiten kann. Das Problem ist, dass ich nicht einfach den Primärschlüssel der Qualifikation weitergeben kann, weil dieses Objekt leer sein kann (leer und null ist wahr, was beabsichtigt ist). Stattdessen würde Ich mag nur die Position Primärschlüssel übergeben und das Stichwort preferred_qualification oder base_qualification in der URL wie folgt:

(r'^edit/preferred_qualifications/(?P<parent_id>\d{1,4})/$', some_view), 

(r'^edit/base_qualifications/(?P<parent_id>\d{1,4})/$', some_view), 

Gibt es eine Möglichkeit, dies mit generischen Ansichten zu tun, oder muß ich zu meinem eigenen machen Aussicht? Dies ist einfach wie Kuchen mit regulären Ansichten, aber ich versuche, alles, was ich kann auf allgemeine Ansichten aus Gründen der Einfachheit zu migrieren.

Antwort

-1

Wie in den documentation for the update_object generic view erklärt, wenn Sie ParentModel als Wert für die 'model' Schlüssel in den options_dict in Ihrer URL-Definition haben, sollten Sie alle eingestellt werden.

+0

In diesem Fall würden Sie ParentModel bearbeiten/aktualisieren. Mein Eindruck (obwohl es zugegebenermaßen aus der Frage nicht ganz klar ist) ist, dass OP stattdessen eine Instanz von InnerModel bearbeiten möchte. –

0

Wenn Sie möchten, dass das Bearbeitungsformular für eine der verwandten Instanzen von InnerModel ist, Sie aber die PK für ParentModel in der URL übergeben möchten (so gut ich das sagen kann, ist es das, was Sie fragen ist nicht sehr klar), Sie müssen eine Wrapper-Ansicht verwenden. Wie soll Djangos generische Ansicht magisch wissen, welches verwandte Objekt du bearbeiten willst?

Je nachdem, wie konsistent die zugehörigen Objektattribute für die "vielen Modelle" sind, die Sie auf diese Weise bearbeiten möchten, besteht eine gute Chance, dass dies mit nur einer Wrapper-Ansicht statt mit vielen funktioniert. Schwer zu sagen, ohne mehr Code zu sehen.

Verwandte Themen