2011-11-25 117 views
1

我想根據django管理員來調整我的應用程序,使其更友好。django中的外鍵表單字段admin

Add offer page

以下管理頁面好當用戶創建報價給客戶,這是在系統中已註冊。但如果客戶是新客戶,則用戶必須點擊+並在彈出窗口中提交「添加新客戶」表單。這很混亂。

我該如何改變這種行爲來填充同一頁面上的客戶端數據,而不是在內聯中彈出?

這是我的admin.py。

class OptionOffer(admin.ModelAdmin): 
    fieldsets = (('', {'fields': (('client'), 'startDate', 'regNumber')}),) 

class OptionClient(admin.ModelAdmin): 
    fieldsets = (('', {'fields': ('code')}),) 

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) 

回答

0

你不會得到一個更好的解決方案,而這樣做的Django管理的一些嚴重的黑客攻擊的model.py。您可能會遇到(或被指出)InlineModelFormsets,它們會在當前表單的底部提供一個表單,允許您以內聯方式添加客戶端。雖然這可能看起來像你所需要的,但很快你就會發現它不適合你的用例,因爲它需要從客戶到提供的外鍵關係,而不是你擁有哪個外鍵關係。提供給客戶端

+0

謝謝你的回答。這是否意味着從傳統的django管理應用程序離開或離開的任何步驟會讓我受苦?用戶想要在單個頁面上進行邏輯相關的更改是非常常見的情況。也許我可能根本不會使用Django來解決這類問題。你怎麼看?你能指點我一個很好的開源的django管理員用法的例子,所以我可以從最佳實踐中學習。 – user537723

1

您可以使用一些Javascript框架,如jQuery,並使用iframe或類似的東西加載編輯頁面中的彈出窗口。或者使用一些lightbox風格的彈出窗口而不是Django標準窗口。

相關問題