Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

use `SplitArrayField` instead of `SimpleArrayField` in ModelForm

I have model with ArrayField and I want use ModelForm. Django by default use SimpleArrayField but I need SplitArrayField. I get my data from json and I use form only for validation and I don't need input widgets. (I use client side rendering)

class Profile(models.Model):
  phone = ArrayField(CharField(max_length=20, validators=[some_validator]))

class ProfileForm(ModelForm):
  class Meta:
    model = Profile

form = ProfileForm(data={"phone":["555-5555","444-4444"]})
form.validate()

How I can use SplitArrayField in ModelForm?

like image 755
seyed Avatar asked Dec 27 '25 20:12

seyed


1 Answers

I solve my problem with field_classes in Meta class:

class ProfileForm(ModelForm):

    class Meta:
        model = Profile
        field_classes = {
            'phone': SplitArrayField, # or any custom field
        }

note:

SplitArrayField is not good enough for me so I create my own array form field

like image 147
seyed Avatar answered Dec 30 '25 16:12

seyed