0

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

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

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

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

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

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

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

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

4

2 回答 2

2

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

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

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

希望有帮助!

于 2009-05-31T00:09:44.053 回答
1

我已经解决了类似的问题,并且得出的结论是,在许多这样的情况下,使用表单编写自己的管理界面确实比尝试将不打算存在的功能硬塞到管理员中更好。

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

于 2009-06-01T20:40:05.993 回答