【问题标题】:Django abstract class, form page on select dynamicallyDjango抽象类,动态选择表单页面
【发布时间】:2012-01-30 02:28:34
【问题描述】:

如果我正在创建,即 /admin/product/ 中的一个项目,我会得到一些在 product/models.py 类 Item 中描述的 2 个字段:categoryname
我想要第三个根据所选类别(ab)创建项目时,字段会动态显示:

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 类别和(colorcount)字段将分别仅针对(ab)类别出现;

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

附言
抱歉标题不正确;

【问题讨论】:

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


    【解决方案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()
    

    【讨论】:

    • 抽象类似乎很合适。你能举一个关于最后一段的小例子吗?谢谢。
    • 我已经有一段时间没有使用视图了,但我认为编辑应该让您了解我在说什么。
    • 投票失败仍然无法按预期工作:选择类别(香蕉,苹果)时参数(计数,颜色)不会改变。需要 Ajax?
    • 啊,您想在网站显示时动态执行此操作。是的,将需要 ajax - 在我的专业知识之外正式传递给你。对不起。
    • 好的,将ajax视为另一个问题,您的回答仍然有帮助,谢谢(:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 2020-07-04
    • 2016-03-12
    • 2011-09-01
    • 1970-01-01
    • 2014-10-28
    • 2023-03-06
    相关资源
    最近更新 更多