【问题标题】:Creating an order in Django在 Django 中创建订单
【发布时间】:2009-05-30 19:13:21
【问题描述】:

大家好,我有几个关于 django 管理员的问题。

首先是相关细节。我目前有客户端、打印机、墨盒和订单模型。

Printer 模型对 Cartridge 模型有一个 ManyToManyField,它允许您选择可以与该打印机一起使用的所有墨盒。

客户对他们拥有的打印机有一个 ManyToManyField。

1) 我想通过 Django 管理员创建一个订单,让您可以通过 ManyToManyField 指定客户、折扣和多个墨盒。这有点棘手,因为我必须通过另一个表来指定它是新墨盒还是重新填充。

2) 我希望管理员过滤墨盒以仅显示属于他们拥有的打印机的墨盒。

3) 我也想有一个字段来保存他们订单的总价格,但它应该根据他们添加到订单中的墨盒数量来计算它。我不知道这是否应该通过向订单中添加更多相同的墨盒或通过在相关表中指定数量的另一个字段来完成。

这可以在管理员中完成还是我需要使用表格?如果是这样,我将如何将其添加到管理员?这似乎很困难,可能我必须分多个部分去做,因为为了过滤墨盒列表,我必须事先了解客户。

【问题讨论】:

    标签: django django-admin django-forms


    【解决方案1】:

    据我所知,不,这不可能。开发版有一些methods for limiting foreign keys,但在我看来,基于客户的限制是不可能的,因为它依赖于单独的外键。

    最好的建议是,如果您真的想在管理表单中执行此操作,则使用 Javascript 来执行此操作。您仍然需要进行 AJAX 调用以获取客户拥有的打印机列表以及基于此显示的墨盒,但可以这样做。您只需使用 the Media class 指定要加载的 JS 文件。

    但我认为这比它的价值更多。我认为最简单的方法是使用Form Wizards。这样,您就有一个步骤来选择客户,因此在下一步您就知道要展示什么墨盒了。

    希望有帮助!

    【讨论】:

      【解决方案2】:

      我曾处理过类似的问题,并且得出的结论是,在许多这样的情况下,使用表单编写自己的管理界面确实比尝试将功能硬塞到管理员中更好在那里。

      就 3) 而言,这取决于您的产品基础是什么样的。如果您可能有客户订购 50 个相同的小部件,您可能确实需要数量字段。如果客户更有可能订购 2 个小部件,一个是红色的,一个是蓝色的,请将每个项目分别添加到 manytomany 字段并在您的订单界面中对它们进行分组。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-05
        • 2023-04-09
        • 2013-04-20
        • 1970-01-01
        • 2021-10-27
        • 1970-01-01
        • 1970-01-01
        • 2020-05-30
        相关资源
        最近更新 更多