Null ID в Django Admin
Я пытаюсь добавить новый продукт в модель Products в Django Admin, но по некоторым причинам поле id всегда становится null после добавления.
Ниже приведен мой код:
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
