2010-01-19 67 views
2

我需要一個插件,它可以使一個外鍵只讀,並且還應該顯示有關這方面的不是ID小部件Django管理

假設

Class A(models.Model): 
    id=models.AutoField(primary_key=True) 
    name=models.CharField(max_length=200) 

    def __unicode__(self): 
    return self.name 

Class B(models.Model): 

    id=models.AutoField(primary_key=True) 
    name=models.ForeignKey(A) 
    description=models.CharField(max_length=200) 

現在,當我做「名稱值'的B類只讀,然後在管理它只顯示在A類中的該名稱的id對應的值。是否有任何可以使該字段爲只讀的小部件,也顯示值不是ID

回答

0

作爲解決方法可以:

1),添加字段nameraw_id_fields的ModelAdmin的屬性,然後

2)禁止使用JavaScript(留下完好的值標籤)的標識輸入框。

除了安全問題(如果有人模仿禁用/刪除的輸入框),它會執行您詢問的內容。這可以另外在例如從ModelForm繼承的類的clean_name函數中處理。

+0

我不想使用javascript – ha22109 2010-01-19 11:48:33

0

如果我顯示我米表示help_text的值help_text.Means值以及標識

這可以簡單地achievd

def get_form(self, request, obj=None): 
    form = super(BAdmin,self).get_form(request, obj) 
    link = obj.id 
    pl=A.objects.get(id=obj.name_id) 
    help_text1 = "%s"%(pl.name) 
    form.base_fields['name'].help_text = help_text1 
    return form 
0

第三解決方法是使用Django主幹其中將readonly_fields屬性添加到ModelAdmin。 其他替代方法是用這個補丁來修補當前的Django的版本:http://code.djangoproject.com/ticket/342

編輯:我使用Django r12204,因爲後續版本打破的Django-CMS應用程序,這對我來說是非常重要的。我認爲django後來的版本有這個,但我不得不修補我的django安裝以顯示外鍵值而不是id。但似乎這種行爲仍然持續在Django的主幹,所以這裏是補丁:http://dpaste.com/hold/147814/

+0

如果我在模型管理員使用readonly_field然後它也會顯示Id不是值。 – ha22109 2010-01-20 04:42:18

+0

我有同樣的問題。我結束了黑客django管理員的代碼顯示對象的外鍵的值 - 這是我的差異:http://dpaste.com/hold/147814/ – fest 2010-01-20 07:58:59

+0

可以描述更多。我不知道在哪裏複製該代碼 – ha22109 2010-01-20 09:35:37

相關問題