Se sto creando un articolo in /admin/product/
ottengo alcuni 2 campi che sono descritti nella classe product / models.py Item
: category
e name
;
Vorrei che un terzo campo appaia dinamicamente durante la creazione di un oggetto in base alla categoria scelta (a
o b
):
CATEGORIES = (
("a", "Apple"),
("b", "Banana"),
)
class Item(models.Model):
category = models.ForeignKey(choices=CATEGORIES)
name = models.CharField(max_length=255)
"""
category.a:
color = models.CharField(max_length=21)
category.b:
count = models.CharField(max_length=21)
"""
Il campo name
sarà come per a
quindi per b
categorie e (color
o count
campo apparirà solo per (a
o b
) categorie rispettivamente;
Qualsiasi aiuto è molto apprezzato. Grazie.
Post scriptum
Ci scusiamo per il titolo in qualche modo sbagliato;
risposte:
2 per risposta № 1Penso che quello che stai cercando di fare sia avere dei modelliquesto cambia in base alla categoria. Il modo in cui lo farei è definire un modello astratto (probabilmente chiamato frutto, in questo caso) con tutte le informazioni comuni, e poi ereditarlo in un modello chiamato banane e un modello chiamato mele.
Per aggiungere una nuova banana / mela, quindi, utilizzerei il modulo di amministrazione appropriato o aggiungo la logica alla vista appropriata che determina il tipo di oggetto da aggiungere.
https://docs.djangoproject.com/en/dev/topics/db/models/#abstract-base-classes
Modificare: Sfortunatamente non so come l'interfaccia di amministrazione si occupa di classi astratte e non ho una installazione di prova a portata di mano. Per quanto riguarda la logica, nella visione mi aspetterei che la logica fosse qualcosa del tipo:
from models import banana, apple
def fruitView(request)
if request.REQUEST["Type"] = "Banana":
b = banana(request.REQUEST["Count"])
b.save()
else:
a = apple(request.REQUEST["Colour"])
a.save()