2009-07-02 4 views
2

Ich habe ein Produktmodell, das einen FK hat, um Preis, als ein Produkt kann viele Preise enthalten. Aber ich möchte auch wählen können, welcher dieser vielen Preise der tatsächliche Preis sein soll, deshalb habe ich sowohl Preis (im Produktmodell) als auch Produkt (im Preismodell), um dies zu erreichen. Betrachten Sie diese folgenden Modelle:Dynamische Filterung auf FK in Django Admin

class Product(models.Model): 
name = models.CharField() 
price  = models.ForeignKey('Price', blank=True, null=True, related_name='Product') 

class Price(models.Model): 
amount = models.IntegerField() 
product = models.ForeignKey('Product', related_name='product') 

Dies funktioniert gut, obwohl ich Problem, die Preise in der Drop-Down-Menü Filterung habe. Es gibt mir alle Preise statt nur die Preise, die zu diesem Produkt gehören. Versucht

limit_choices_to 

aber das scheint nicht mit dynamischen Werten zu arbeiten.

Ich habe auch über diesen Patch kommen: http://code.djangoproject.com/ticket/2445

nicht sicher, was die beste Lösung hier wäre. Würde mich über einige Hinweise freuen, danke!

+0

Was meinen Sie, wenn ein Produkt viele Preise enthalten kann, aber dann wählen Sie einen? Ich versuche nur, den Umfang dessen, was Sie damit zu tun versuchen, zu verstehen, damit ich etwas Relevantes vorschlagen kann. – AlbertoPL

+0

Ein Produkt kann viele Preise haben (FK 1, inline). Aber von den Preisen, die zu einem Produkt gehören, wird einer als "Hauptpreis" ausgewählt (FK 2, Dropdown-Menü), der später auf der Detailansichtsseite angezeigt wird. Ich hoffe, das war eine bessere Erklärung :) – orwellian

Antwort

0

Sie könnten tun:

Preise = price.object_set_all (product = 'Ihr Produkt')

ich den Tag-links 'Ihr Produkt', weil ich mich nicht erinnern, wenn selbst in dieser Arbeit wird Lage. Aber ich denke, Dies könnte der richtige Ansatz sein.

Sie sollten den ForeignKey nicht in beiden Modellen anzeigen lassen, Sie brauchen ihn nur in Price. Dann kann Ihr Produktmodell ein Feld namens current_price haben, das auf einer Benutzerauswahl basiert.

+0

Danke für Ihre Antwort AlbertoPL Ich bekomme: 'ForeignKey' Objekt hat kein Attribut 'Objekt_Set' oder: 'ForeignKey' Objekt hat kein Attribut 'Objekt_Set_all' auf: Preis = models.ForeignKey (' Preis ') prices = data.object_set_all (product =' Ihr Produkt ') Ich bin mir auch nicht sicher, wie das current_price-Feld im Produktmodell aussehen soll. – orwellian

+0

Das ist, weil ich Ihnen das völlig falsch sagte heh, es sollte Product.objects.all() AlbertoPL

+0

Es sollte eher Price.objects.all() sein, sorry. – AlbertoPL