Ако създам елемент, т.е. /admin/product/
получавам някои 2 полета, които са описани в класа продукт / models.py Item
: category
и name
;
Искам третото поле да се показва динамично, докато създавате елемент в зависимост от избраната категория (a
или 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)
"""
Областта name
ще бъде като за a
така че за b
категории и (color
или count
) полето ще се показва само за (a
или b
) съответно;
Всяка помощ е много ценена. Благодаря.
Послепис
Съжаляваме за някакво неправилно заглавие;
Отговори:
2 за отговор № 1Мисля, че това, което се опитвате да направите, е да имате моделитази промяна се основава на категорията. Начинът, по който бих направил това, е да дефинирам абстрактен модел (вероятно наричан плод, в този случай) с цялата обща информация и след това да наследим от него в модел, наречен банани, и модел, наречен ябълки.
За да добавите нов банан / ябълка, тогава бих използвал подходящата администраторска форма или добавих логика към подходящия изглед, който определя кой обект да се добави.
https://docs.djangoproject.com/en/dev/topics/db/models/#abstract-base-classes
Редактиране: За съжаление не знам как интерфейсът на администратора се занимава с абстрактни класове, а аз не разполагам с тест за инсталиране. Що се отнася до логиката, според мен очаквам логиката да бъде нещо като:
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()