Null ID в Django Admin

Я пытаюсь добавить новый продукт в модель Products в Django Admin, но по некоторым причинам поле id всегда становится null после добавления.

enter image description here

Ниже приведен мой код:

models.py

from django.db import models


class Products(models.Model):
    id = models.BigAutoField(primary_key=True) # incremental id
    title = models.CharField(max_length=200)
    def __str__(self):
        return self.title

admin.py

from django.contrib import admin
from import_export.admin import ImportExportModelAdmin

from .models import *


class ProductsAdminConfig(ImportExportModelAdmin):
    model = Products
    search_fields = ('title',)
    list_filter = ('title', )
    list_display = ('id', 'title', )
    

admin.site.register(Products, ProductsAdminConfig)

Первоначально я создал свою таблицу базы данных Products с помощью SQLAlchemy, конвертируя CSV в Mysql. Однако, я хотел иметь возможность добавить новый продукт и в Django Admin.

Я попробовал очистить таблицу SQL, очистить папку миграции и запустить py manage.py makemigrations и py manage.py migrate, но ошибка все еще сохраняется.

Когда я попытался добавить новый продукт, все еще генерируются строки данных с нулевыми идентификаторами.

Можете ли вы предложить мне способ решения этой проблемы? Спасибо!

Ваш скрипт, создающий таблицу, не включает автоинкремент.

Я полагаю, что это нужно сделать после запуска вашего скрипта. Именно база данных назначает поле id для первичного ключа BigAutoField.

См. документацию по mysql по адресу: https://www.techonthenet.com/mysql/auto_increment.php

Я не уверен в команде, чтобы сделать в существующем поле автоинкремент после создания в mysql.

EDIT См. https://stackoverflow.com/a/2169090/4872140

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

Похожий вопрос: sqlalchemy: как добавить строку таблицы с автоинкрементом в mysql

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