Django не может использовать свой собственный UUID, пытается сделать hex-замену ошибок при добавлении новых элементов в модель
Это происходит как на моем локальном, так и на prod-решении, оба проекта Django новые и данные между ними не передаются (каждый раз новая база данных).
Всякий раз, когда я пытаюсь сделать новую запись в одной из моих моделей, она выбрасывает ошибку AttributeError
'int' object has no attribute 'replace'
Сначала я думал, что это что-то не так с моим кодом, который записывает данные в базу данных, но я обнаружил, что это происходит, когда я пытаюсь ввести что-то новое через панель администратора.
Если проследить дальше, то окажется, что это происходит из-за того, что внутренний код пытается очистить UUID, но терпит неудачу:
hex = hex.replace('urn:', '').replace('uuid:', '')
Я совершенно не понимаю, что делать дальше, учитывая, что это внутренний код Django, который выдает ошибку, и я не передаю ему значения UUID, они поступают из моей модели, которая использует рекомендуемый код:
class Articles(models.Model):
# Fields
id = models.UUIDField(primary_key=True,default=uuid.uuid4, editable=False)
title = models.CharField(max_length=256,blank=False,null=False,help_text="", verbose_name="Article Title")
url = models.URLField(blank=False,null=False, help_text="", verbose_name="Article URL")
image_url = models.CharField(max_length=512,blank=False,null=False,help_text="", verbose_name="Image Reference")
site = models.ForeignKey(Sites, on_delete=models.CASCADE)
published = models.DateField(null=True, blank=True, help_text="The date the article was published", verbose_name="Published Date")
created = models.DateTimeField(auto_now_add=True,null=True, blank=True, help_text="The date the article was created in the site", verbose_name="Created Date")
boost = models.FloatField(default=0,blank=False,help_text="Boosts the article artificially",verbose_name="Boost Count")
clicks = models.FloatField(default=0,blank=False,help_text="Count of link clicks",verbose_name="Click Count")
modifier = models.FloatField(default=1,blank=False,help_text="",verbose_name="Modifier Score")
rank = models.GeneratedField(
expression=((F("clicks")+ F("boost")) * F("modifier")),
output_field=models.IntegerField(default=0,blank=False,help_text="Rank in the feed", verbose_name="Rank Score"),
db_persist=True,
)
hidden = models.BooleanField(default=False, help_text="The article is hidden", verbose_name="Article Hidden")
site_hide = models.BooleanField(default=False, help_text="The parent site is hidden", verbose_name="Site Hidden")
curated = models.BooleanField(default=False, help_text="The article is curate", verbose_name="Article Curated")
Забавно, что когда я использую скрипт для массового импорта элементов, он не работает только на некоторых новых записях
Это проявляется как в локальной, так и в prod-версии, я попытался посмотреть, что можно сделать с записью UUID в модели, но не смог найти ничего существенного для изменения.
Я также погуглил extensibly, и, похоже, за последние 5 или около того лет не было ни одного сообщения, связанного с django, по этому вопросу.
Ядерным вариантом было бы очистить мою prod db и заново импортировать все, но я беспокоюсь, что это может произойти снова, поскольку это случилось в двух разных средах.