Ich habe drei Modelle: Product
, Product Class
und Product Attributes
. Wenn dem Benutzer nun eine Seite zum Erstellen eines neuen Produkts angezeigt wird, muss er/sie die Product Class
aus einem Drop-down-Menü auswählen. Basierend auf dieser Auswahl muss Product Attributes
dynamisch aktualisiert werden (mit AJAX) und dem Benutzer ermöglichen, bestimmte Informationen einzugeben.Ändern Django Form Felder basierend auf Benutzerauswahl
Zum Beispiel: Ein Produkttyp Automobiles
sein könnte, in welchem Fall der Benutzer Tyre Size
, erforderlich sein sollte Fuel Tank Capacity
eingeben usw. oder eine Art Produkt Electronics
und der Benutzer erforderlich sein könnte RAM
, Storage Capacity
usw. eingeben .
Die Frage ist, wie man das in Django schafft. Meine Ansicht hat ein Produktformular, aber ich kann keine Attributfelder zu diesem Formular hinzufügen, da ich nicht weiß, was product class
der Benutzer auswählen wird. Also im Grunde muss ich Formularfelder ändern (Attributfelder hinzufügen) basierend auf Benutzerauswahl. Wie mache ich das?
Derzeit sobald das Produkt gespeichert und geöffnet werden dann wieder für die Bearbeitung, Ich füge die entsprechenden Attributfelder mit dem Code:
def add_attribute_fields(self):
"""
For each attribute specified by the product class, this method
dynamically adds form fields to the product form.
"""
for attribute in self.instance.product_class.attributes.all():
field = self.get_attribute_field(attribute)
if field:
self.fields['attr_%s' % attribute.code] = field
Aber das beruht weitgehend auf der Produktinstanz bereits erstellt. Ich möchte, dass der Benutzer beim Erstellen eines neuen Produkts auch Daten eingeben kann. Wie gehe ich vor?