Выборка не с пользовательским основным идентификатором в django

Я создал таблицу, в которой первичный id должен настраивать id product_id, как

class Product(models.Model):
    
    product_id = models.BigIntegerField(auto_created = True,primary_key = True, unique=True)
    name = models.CharField(max_length=200)
    ref = models.CharField(max_length=100)
    number= models.CharField(max_length=100)
    
    class Meta:
        db_table = "products"

    def __str__(self):
        return self.name

После создания записи я хочу получить id последней записи, но когда я получаю данные с этим id, получаю None

product = Product.objects.create(name=name, ref=ref, number=number)
print(product.product_id)

product.product_id id получает null Пожалуйста, дайте мне решение, почему это происходит.

Django установит первичный ключ AutoField или BigAutoField, если база данных поддерживает возврат назначенного первичного ключа.

Таким образом, вы должны переписать модель следующим образом:

class Product(models.Model):
    product_id = models.BigAutoField(primary_key=True)
    # …

Причина этого в том, что Django не знает, каким будет первичный ключ (pk) объекта до того, как объект будет сохранен в базе данных.

Это потому, что Django не определяет значение pk для входящего объекта, это делает ваша база данных. Чтобы получить pk, вы должны сначала сохранить объект, а затем получить его pk.

Вернуться на верх