Django: Admin: modifica del widget del campo in Admin




django-admin boolean (2)

Ho un modello con un valore booleano come quello:

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

Questo appare come una casella di controllo in admin.

  1. Come potrei usare questo come un pulsante radio in admin?
  2. Inoltre, come faccio a essere sempre con un determinato valore selezionato in admin?
  3. Inoltre, voglio che il valore predefinito sia l'opposto, quando un utente non amministratore aggiunge un TagCat . Questo campo dovrebbe essere nascosto da lui.

Qualcuno può dirmi come fare questo? La documentazione di Django non sembra andare in questi dettagli.


AGGIORNAMENTO 1: codice che mi consente di terminare con 1) (non dimenticare di passare le SCELTE al campo booleano nel modello)

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)

I pulsanti della radio appaiono brutti e spostati, ma almeno funzionano

2) Ho risolto le seguenti informazioni in MyModel.py:

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

C'è un altro modo per farlo, IMO è molto più semplice se vuoi che ogni campo dello stesso tipo abbia lo stesso widget. Questo viene fatto specificando un formfield_overrides a ModelAdmin. Per esempio:

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

Maggiori informazioni sui documenti: https://docs.djangoproject.com/en/1.4/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_overrides

AGGIORNATO: collegamento alla versione di Django 2.0: https://docs.djangoproject.com/en/2.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_overrides







django-widget