2010-12-02 28 views
17

私はそのようなブール値でモデルを持っている:ジャンゴ:管理者:管理者にフィールドのウィジェットを変更

class TagCat(models.Model): 
    by_admin = models.BooleanField(default=True) 

これは、管理者のチェックボックスとして表示されます。

  1. これを管理者のラジオボタンとして使用するにはどうすればよいですか?
  2. また、どのようにして管理者の特定の値を選択することができますか?
  3. また、管理者以外のユーザーがTagCatを追加したときのデフォルト値を逆にします。このフィールドは彼から隠されるべきです。

誰かがこれを行う方法を教えてもらえますか? Djangoのドキュメントはそのような詳細には載っていないようです。

+0

最初の質問は、http://stackoverflow.com/questions/854683/django-booleanfield-as-radio-buttons –

+0

で返信しました。その質問を読んだことがあります。その答えは一般的にどのように置き換えるべきか、私はその特定のケースだけをラジオにしたいと思うようです。最後の答えは、私が欲しいものだと思っていたので、私はそれを試して、うまくいきませんでした。なぜなら、管理者はラベルだけが現れるからです。私は私のコードを 'UPDATE 1'として貼り付けます。 – mgPePe

答えて

29

UPDATE 1:コード私は1で行われます)(モデル内のBooleanFieldに選択を渡すTOT忘れないでください)

from main.models import TagCat 
from django.contrib import admin 
from django import forms 

class MyTagCatAdminForm(forms.ModelForm): 
    class Meta: 
     model = TagCat 
     widgets = { 
      'by_admin':forms.RadioSelect 
     } 

class TagCatAdmin(admin.ModelAdmin): 
    form = MyTagCatAdminForm 


admin.site.register(TagCat, TagCatAdmin) 

ラジオボタンが醜いとずれて表示されますが、少なくとも、彼ら

BYADMIN_CHOICES = (
    (1, "Yes"), 
    (0, "No"), 
) 
class TagCat(models.Model): 
    by_admin = models.BooleanField(choices=BYADMIN_CHOICES,default=1) 
+0

これは私を助けました!ありがとう! :D – lucasmonteiro001

22

はあなたが肝炎には、同じタイプのすべてのフィールドをしたい場合は、IMOはるかに簡単であること、これを行うための別の方法があります:

2)働く私はMyModel.pyに情報を次のように解決しました同じウィジェット。これは、ModelAdminにformfield_overridesを指定することによって行われます。ドキュメント内

class MyModelAdmin(admin.ModelAdmin): 
    formfield_overrides = { 
     models.TextField: {'widget': RichTextEditorWidget}, 
    } 

より:たとえば、あなたがフィールドを完全に制御を取得し

class MyAdminForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(MyAdminForm, self).__init__(*args, **kwargs) 

     self.fields['by_admin'].label = 'My new label' 
     self.fields['by_admin'].widget = forms.RadioSelect() 


    class Meta: 
     model = TagCat 

class MyAdmin(admin.ModelAdmin): 
    fields = ['name', 'by_admin'] 
    form = MyAdminForm 

この方法:https://docs.djangoproject.com/en/1.4/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_overridesここ

9

はmgPePeの応答のよりダイナミックな拡張です。

関連する問題