Django - Auswahl auf etwas beschränken, das von der Instanz abhängt

8

Ich habe einige Foos, die in Kategorien eingeteilt sind. Für jede Kategorie möchte ich einen Gewinner foo auswählen können.

Daher habe ich Modelle, die so aussehen:

%Vor%

(Der Grund, warum winner ein ManyToManyField ist, ist, dass ein einzelnes foo zu mehreren Kategorien gehören kann, während es in einer einzelnen Kategorie mehr als einen Gewinner aufgrund von ex-aequo gibt.)

Ich möchte die natürliche Einschränkung auferlegen, die ein foo in einer Kategorie nur dann gewinnen kann, wenn es zu dieser Kategorie gehört. Der sinnvollste Weg dazu scheint die % co_de zu sein % Parameter, aber es scheint mir, dass es nicht möglich ist, die Auswahl basierend auf der aktuellen Instanz des Modells zu beschränken.

Ich kann diese Einschränkung in einer bestimmten Form auferlegen, aber ich möchte dies aus zwei Gründen vermeiden:

  • Die Beschränkung lebt natürlich auf der Modellebene. Es ist eine bestimmte Beziehung, die immer zwischen zwei verwandten Modellen gehalten werden sollte
  • Die Wahl des Gewinners wird im Admin vorgenommen, und ich möchte vermeiden, dass ich die Admin-Formulare
  • anpassen muss
  

Gibt es eine Möglichkeit, diese Beschränkung in Django zu erzwingen?

    
Andrea 06.10.2011, 10:06
quelle

1 Antwort

4

Es gibt keine Möglichkeit, das M2M-Feld auf der Modellebene (dh mit limit_choices_to) zu beschränken. Sie können dies jedoch in folgendem Format tun:

%Vor%

Nun, hast du das bemerkt?

%Vor%

Wahrscheinlich wollen Sie:

%Vor%     
Marat 06.10.2011 14:27
quelle