Django抽象类,动态选择表单页面

时间:2012-01-30 02:28:34

标签: django django-models django-admin django-views

如果我在/admin/product/中创建了一个项目,我会得到product / models.py class Item中描述的2个字段:categoryname;
我希望在根据所选类别(ab)创建项目时动态显示第3个字段:

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)
"""

字段namea相同,因此b类别和(colorcount)字段仅显示({{1}分别为}或a)类别;

任何帮助是极大的赞赏。谢谢。

P.S。 对于某些不正确的标题感到抱歉;

1 个答案:

答案 0 :(得分:2)

我认为你要做的是让模型根据类别进行更改。 我这样做的方法是用所有常见信息定义一个抽象模型(在本例中可能称为水果),然后在名为bananas的模型和名为apples的模型中继承它。

要添加新的香蕉/苹果,我会使用适当的管理表单或将逻辑添加到相应的视图,以确定要添加的对象类型。

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()