Django admin choice field

前端 未结 7 1647
日久生厌
日久生厌 2020-12-18 22:48

I have a model that has a CharField and in the admin I want to add choices to the widget. The reason for this is I\'m using a proxy model and there are a bunch of models tha

7条回答
  •  抹茶落季
    2020-12-18 22:51

    Below a solution that works immediately with Postgres' special ArrayField:

    # models.py
    
    class MyModel(models.Model):
        class Meta:
            app_label = 'appname'
    
        name = models.CharField(max_length=1000, blank=True)
      
        ROLE_1 = 'r1'
        ROLE_2 = 'r2'
        ROLE_3 = 'r3'
    
        ROLE_CHOICES = (
            (ROLE_1, 'role 1 name'),
            (ROLE_2, 'role 2 name'),
            (ROLE_3, 'role 3 name'),
        )
    
        roles = ArrayField(
            models.CharField(choices=ROLE_CHOICES, max_length=2, blank=True),
            default=list
        )
    
    # admin.py
    
    class MyModelForm(ModelForm):
        roles = MultipleChoiceField(choices=MyModel.ROLE_CHOICES, widget=CheckboxSelectMultiple)
    
    
    @admin.register(MyModel)
    class MyModelAdmin(admin.ModelAdmin):
        form = MyModelForm
        list_display = ("pk", "name", "roles")
    

    (Django 2.2)

提交回复
热议问题