UUID в качестве первичного ключа выдает ошибку переполнения, несмотря на попытку использовать taggit
Я пытаюсь использовать UUID в качестве первичного ключа в модели, но при использовании перенаправления возникает ошибка переполнения.
Я искал в Интернете похожие проблемы, поскольку предполагаю, что люди хотят сделать это довольно часто. Я наткнулся на: https://github.com/jazzband/django-taggit/issues/679
Итак, я установил dajngo-taggit и попытался добавить сниппет по этой ссылке в свой код, но проблема осталась.
Ниже приведен мой текущий код, использующий сниппет:
[models.py]
from django.db import models
from taggit.managers import TaggableManager
from taggit.models import GenericUUIDTaggedItemBase, TaggedItemBase
class Person(models.Model):
uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
# ...
class UUIDTaggedItem(GenericUUIDTaggedItemBase, TaggedItemBase):
# If you only inherit GenericUUIDTaggedItemBase, you need to define
# a tag field. e.g.
# tag = models.ForeignKey(Tag, related_name="uuid_tagged_items", on_delete=models.CASCADE)
class Meta:
verbose_name = _("Tag")
verbose_name_plural = _("Tags")
class Car(models.Model):
person = models.ForeignKey(Person, null=True, on_delete=models.SET_NULL)
brand = models.CharField(max_length=50)
colour = models.CharField(max_length=50)
# ...
[urls.py]
# ...
urlpatterns = [
# ...
path("<uuid:pk>/car/<int:id>/", CarDetail.as_view(), name="car_detail"),
# ...
]
И ошибка, которую я получаю:
OverflowError at /en/person/c8c91051-5773-4c69-9587-92b468186db7/car/1/
Python int слишком большой для преобразования в SQLite INTEGER
У вас есть идеи, что я могу попробовать сделать, чтобы исправить это? Я занимаюсь этим вопросом уже довольно долгое время. Спасибо!!!