django admin中的外键表单字段

时间:2011-11-25 14:54:00

标签: django popup foreign-keys admin

我想根据django admin调整我的应用程序以提高用户友好性。

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)

2 个答案:

答案 0 :(得分:1)

您可以使用一些Javascript框架(如jQuery),并使用iframe或类似内容在编辑页面中加载弹出窗口。或者使用一些灯箱式弹出窗口而不是Django标准弹出窗口。

答案 1 :(得分:0)

如果不对django管理员进行严重的黑客攻击,你将无法获得更好的解决方案。您可能会遇到(或被指向)InlineModelFormsets,它在您当前表单的底部提供一个表单,允许您以内联方式添加客户端。虽然这可能看起来像你需要的,但你很快就会看到它不适合你的用例,因为它需要从客户端到商品的外键关系,而不是你所拥有的外来关系。提供给客户