2017-09-13 22 views
0

のオプションに属性を追加し、私は、リストフィールドを持っていると私は、現在私が持っている私の<select>Djangoの管理1.11ジャンゴ1.11管理者に選択

の各<option>に属性を追加する

<select name = "example" id = "id_example"> 
    <option value = "" selected> --------- </ option> 
    <option value = "480"> data1 </ option> 
    <option value = "481"> data2 </ option> 
    <option value = "482"> data3 </ option> 
</select> 

私はリンク属性を追加したい:私は、次のスタックDjango form field choices, adding an attributeが、関数render_option(自己、SEをテストした

<select name = "example" id = "id_example"> 
    <option value = "" selected> --------- </ option> 
    <option value = "480" link = "1"> data1 </ option> 
    <option value = "481" link = "1"> data2 </ option> 
    <option value = "482" link = "2"> data3 </ option> 
</select> 

lected_choices、option_value、option_label)はジャンゴで1.11 https://code.djangoproject.com/ticket/28308

# model.py 

class ModelA(models.Model): 
    id = models.AutoField(primary_key=True) 
    fielda = models.ForeignKey('ModelB', blank=True, null=True,) 


class ModelB(models.Model): 
    id = models.AutoField(primary_key=True) # In select option is value 
    name = models.CharField(max_length=254) # In select option is data 
    link = models.Integer() # I would like a new attribute in select option link 

    def __str__(self): 
     return self.name 


# admin.py 

class ModelAInlinesForm(forms.ModelForm): 
    fielda = forms.ModelChoiceField(
     queryset=ModelB.objects.all(), 
     widget=forms.Select(attrs={'test': 'test1'})) 
    class Meta: 
     model = ModelA 
     fields = "__all__" 


class ModelAInlines(admin.TabularInline): 
    model = ModelA 
    extra = 0 
    form = ModelAInlinesForm 

ではありません、あなたは適切に属性を追加する方法任意のアイデアを持っていますか?

+0

に触発されたあなたはここに関連するコードのいずれかを示していません。テンプレート、フォーム、ビューはどのように見えますか? –

答えて

2

私はhttps://djangosnippets.org/snippets/2453/

class ModelAInlinesFormSelect(forms.Select): 

    def create_option(self, name, value, label, selected, index, subindex=None, attrs=None): 

     option_dict = super(SemisInlinesFormSelect, self).create_option(name, value, label, selected, index, 
                    subindex=subindex, attrs=attrs) 
     if option_dict['value']: 
      option_dict['attrs']['link'] = ModelB.objects.values().get(
       id=option_dict['value'])['link_id'] 
     return option_dict 


class ModelAInlinesForm(forms.ModelForm): 
    fielda = forms.ModelChoiceField(
     queryset=ModelB.objects.all(), 
     widget=ModelAInlinesFormSelect()) 
関連する問題