我想调整我的基于django管理的应用程序,使其更加用户友好。
Add offer page
当用户为已经在系统中注册的客户端创建报价时,以下管理页面是很好的。但如果客户是新客户,则用户必须单击+并在弹出窗口中提交“添加新客户”表单。这太让人困惑了。
如何更改此行为,以便在同一页上使用内联而不是在弹出窗口中填写客户数据?
这是我的admin.py。
class OptionOffer(admin.ModelAdmin):
fieldsets = (('', {'fields': (('client'), 'startDate', 'regNumber')}),)
class OptionClient(admin.ModelAdmin):
fieldsets = (('', {'fields': ('code')}),)
和model.py
class Client(models.Model):
code = models.CharField(verbose_name=_("Code"), max_length=11)
class Offer(models.Model):
client = models.ForeignKey(Client, verbose_name = _("Client"))
startDate = models.DateTimeField(verbose_name = _("Start date"))
regNumber = models.CharField(verbose_name=_("Registration number"), max_length=6)
发布于 2011-11-27 21:02:28
您可以使用诸如jQuery之类的Javascript框架,并使用iframe或类似工具将弹出窗口加载到编辑页面中。或者使用一些lightbox风格的弹出窗口,而不是Django标准弹出窗口。
发布于 2011-11-26 00:17:12
如果不对django管理员进行一些严重的黑客攻击,您将无法获得更好的解决方案。您可能会遇到(或被指向) InlineModelFormsets,它在当前表单的底部提供一个表单,允许您以内联方式添加客户端。虽然这看起来像是您需要的,但您很快就会发现它并不适合您的用例,因为它需要从客户端到报价的外键关系,而不是您所拥有的从报价到客户端的ForeignKey关系
https://stackoverflow.com/questions/8270795
复制相似问题