Поле Django UUID не создается автоматически с новой записью

Я только что добавил новую модель, в которой хочу впервые использовать UUID. Я запускаю Django 3.1.3 на python 3.8.10.

Нашел несколько вопросов по этому поводу, и я совершенно уверен, что сделал это в соответствии с этими предложениями. Однако, когда я добавляю запись в эту модель (в веб-поверхности phpmyadmin), UUID не добавляется, он просто остается пустым. Однако, когда я создаю другой, я получаю сообщение об ошибке, что поле UUID не может быть таким же, как где-то еще (оба пустые), что означает, что, по крайней мере, уникальный = True работает.

Еще одна вещь, которую следует упомянуть, это то, что когда я создаю поле с помощью VSCode, обычно эти имена полей заполняются автоматически, однако в этом случае это не так. Думал, это может дать вам подсказку, что происходит.

Моя модель выглядит так:

from django.db import models
import uuid


class MQTTTable(models.Model):
    
    uuid = models.UUIDField(primary_key = True, default = uuid.uuid4, editable = False, unique = True)
    description = models.CharField(max_length= 100, default = None)
    clientID = models.CharField(max_length = 50, default = None)
    mastertopic = models.CharField(max_length = 200, default = None)

🤔 А знаете ли вы, что...
Python поддерживает множество парадигм программирования, включая процедурное, объектно-ориентированное и функциональное программирование.


20
2

Ответы:

изменить default = uuid.uuid4 на default = uuid.uuid4()


Решено

default = uuid.uuid4 - это Django ORM по умолчанию, это не то, что база данных будет делать за вас, как автоматическое увеличение для ID. Поэтому, если вы добавите запись через phpmyadmin, она не установит поле uuid.