Make Django4.2 run with the mysql variant of PositiveAutoField
This commit is contained in:
parent
17e811133a
commit
91c9dd7e9d
2 changed files with 26 additions and 3 deletions
14
README.md
14
README.md
|
@ -1,3 +1,17 @@
|
|||
# Ktools
|
||||
|
||||
This module contains boilerplate for python projects, mostly based on django.
|
||||
|
||||
## Contents
|
||||
|
||||
### Django
|
||||
|
||||
#### PositiveAutoField
|
||||
|
||||
A mysql-based `AutoField` that will use an `UNSIGNED INT` for a primary field.
|
||||
|
||||
Use this in django's `settings.py`:
|
||||
|
||||
```
|
||||
DEFAULT_AUTO_FIELD = 'ktools.django.db.models.fields.PositiveAutoField'
|
||||
```
|
||||
|
|
|
@ -1,11 +1,20 @@
|
|||
from django.db.backends.mysql.base import DatabaseWrapper
|
||||
from django.db.backends.mysql.operations import DatabaseOperations
|
||||
from django.db.models.fields import (
|
||||
AutoFieldMeta, AutoFieldMixin, PositiveIntegerField)
|
||||
AutoField, AutoFieldMeta, PositiveIntegerField)
|
||||
|
||||
DatabaseOperations.integer_field_ranges['PositiveAutoField'] = \
|
||||
DatabaseOperations.integer_field_ranges['PositiveIntegerField']
|
||||
DatabaseOperations.cast_data_types['PositiveAutoField'] = \
|
||||
DatabaseOperations.cast_data_types['PositiveIntegerField']
|
||||
DatabaseWrapper.data_types['PositiveAutoField'] = \
|
||||
'integer UNSIGNED AUTO_INCREMENT'
|
||||
|
||||
|
||||
class PositiveAutoField(
|
||||
AutoFieldMixin, PositiveIntegerField, metaclass=AutoFieldMeta):
|
||||
AutoField, PositiveIntegerField, metaclass=AutoFieldMeta):
|
||||
def get_internal_type(self):
|
||||
return "PositiveAutoField"
|
||||
return 'PositiveAutoField'
|
||||
|
||||
def rel_db_type(self, connection):
|
||||
return PositiveIntegerField().db_type(connection=connection)
|
||||
|
|
Loading…
Reference in a new issue