It looks like you need to add a CategoryField.deconstruct() method.

https://docs.djangoproject.com/en/stable/howto/custom-model-fields/#custom-field-deconstruct-method

On Monday, March 13, 2017 at 8:05:02 AM UTC-4, 김지환 wrote:
>
> # category.py
>
>
> from django.db.models.fields import CharField
>
>
> class CategoryField(CharField):
>     verbose_name = "category"
>     max_length = 40
>
>     NORMAL = 'normal'
>     PUBLIC = 'public'
>
>     choices = (
>         (NORMAL, "normal"),
>         (PUBLIC, "public),
>     )
>
>     def __init__(self, *args, **kwargs):
>         kwargs['max_length'] = self.max_length
>         kwargs['choices'] = self.choices
>         kwargs['verbose_name'] = self.verbose_name
>         kwargs['blank'] = True
>         kwargs['null'] = True
>         kwargs['default'] = self.NORMAL
>         super().__init__(*args, **kwargs)
>
>
>
> # in my models.py
>
> class Car(models.Model):
>
>     category = CategoryField()
>
>
>
>
> When I use custom field overriding django CharField, field changes that 
> `max_length`, `choices` not detected by django makemigrations command.
>
> Add field migration works fine, and verbose_name, blank, null changes are 
> detected by makemigrations command.
> However, when I change max_length and choices, django makemigrations 
> cannot detect changes.
>
> I checked return value of my CategoryField's deconstruct method, and the 
> result is fine.
> Also, if max_length is set like `CategoryField(max_length=50)`, 
> makemigrations can detect changes.
>
> Why django makemigrations cannot detect changes when set max_length and 
> choices in __init__ method?
>
>
>
>
>
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/2894bc7f-d561-4ae1-96d8-c2c2203cab7d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to