/ / Django абстрактна класа, страница за формиране на динамично - django, django-models, django-admin, django-views

Django абстрактен клас, форма на страница за динамично избиране - django, django-models, django-admin, django-views

Ако създам елемент, т.е. /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()