2016-02-13 49 views
1

模型字段鏈接爲foreign_key到具有大量條目的另一個模型。Django表格字段小部件變爲隱藏

我決定用簡單的鏈接替換foreign_keys的默認選擇。

除了字段變得隱藏這個事實之外,它起到了作用!

img

我應該怎麼做,以避免?

admin.py

class SeriesAdmin(ModelLinkAdminFields, admin.ModelAdmin): 
    modellink = ['video',] 

wdiget_file.py

class ModelLinkWidget(forms.HiddenInput): 

    def __init__(self, admin_site, original_object): 
     self.admin_site = admin_site 
     self.original_object = original_object 
     super(ModelLinkWidget,self).__init__() 


    def render(self, name, value, attrs=None): 
     if self.original_object is not None: 
      change_url = urlresolvers.reverse('admin:%s_%s_change' % 
               (type(self.original_object)._meta.app_label, 
               type(self.original_object)._meta.object_name.lower()), 
               args=(self.original_object.id,)) 
      return mark_safe('<a id="%s" name="{name}" href="%s">%s</a>' % 
          (attrs['id'], change_url , escape(self.original_object))) 
     else: 
      return None 

class ModelLinkAdminFields(object): 
    def get_form(self, request, obj=None, **kwargs): 

     form = super(ModelLinkAdminFields, self).get_form(request, obj, **kwargs) 

     if hasattr(self, 'modellink'): 
      for field_name in self.modellink: 
       if field_name in form.base_fields: 
        form.base_fields[field_name].widget = ModelLinkWidget(self.admin_site, getattr(obj, field_name, '')) 
     return form 

回答

1

你的部件覆蓋forms.HiddenInput

你應該使用正確的部件,我相信這應該是Select但也有other options available

+1

謝謝!我已經花了兩個小時在這個愚蠢的錯誤.. –

+0

@ lolorama - 無後顧之憂,盡情享受吧! – Sayse