Hi all,
down votefavorite <https://stackoverflow.com/questions/42011956/django-custom-model-fields#> I am trying to create a Model Fields that is basically a AutoField, but in base 36. Here my definition: class AutoBase36Field(models.AutoField): description = _("AutoField on base36") @staticmethod def base36encode(number): try: number = int(number) except: raise TypeError('number must be an integer') if not isinstance(number, int): raise TypeError('number must be an integer') if number < 0: raise ValueError('number must be positive') alphabet, base36 = ['0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ', ''] while number: number, i = divmod(number, 36) base36 = alphabet[i] + base36 return base36 or alphabet[0] @staticmethod def base36decode(string): if string is None: return None return int(string, 36) def to_python(self, value): if value is None: return value try: return self.base36encode(value) except (TypeError, ValueError): raise exceptions.ValidationError( self.error_messages['invalid'], code='invalid', params={'value': value}, ) def from_db_value(self, value, expression, connection, context): if value is None: return value return self.base36encode(value) def get_prep_value(self, value): if value is None: return None return self.base36decode(value) And here is a Model class I am using: class Content(models.Model): mzk_id = AutoBase36Field(auto_created=True, primary_key=True, serialize=False, verbose_name='ID') name = models.TextField() I have a test failing: def test_incrementation_of_content_mzk_id(self): content1 = Content(name="a") content1.save() mzk_id_1 = int(content1.mzk_id, 36) As mzk_id is kept as an integer. Basically when creating the incremented field, Django doesn't go through to_python()... I am not sure why... Does anyone could help me up? -- 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/2c4300e7-80af-4fc5-b71c-31d6c0814a06%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

