python-3.x - 在 Django 中未定义主键类型警告时使用的自动创建主键

标签 python-3.x django

我刚刚将我的 python 从 3.9.1 更新到 3.9.4。当我尝试运行服务器时。控制台为此给了我一个警告:

WARNINGS:
learning_logs.Entry: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the LearningLogsConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
learning_logs.Topic: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the LearningLogsConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
No changes detected in app 'learning_logs'
请问我该如何解决这个问题。
我阅读了有关此的文档,但我不明白这部分如何this page与此有关。
模型.py
from django.db import models
from django.contrib.auth.models import User
# Create your models here.

class Topic(models.Model):
    text = models.CharField(max_length = 200)
    date_added = models.DateTimeField(auto_now_add = True)
    image = models.ImageField(upload_to = 'backgroud_images', null = True, blank = True)
    owner = models.ForeignKey(User,on_delete = models.CASCADE)
    def __str__(self):
        return self.text



class Entry(models.Model):
    topic = models.ForeignKey(Topic,on_delete = models.CASCADE)
    text = models.TextField()
    date_added = models.DateTimeField(auto_now_add = True)

    class Meta:
        verbose_name_plural = "Entries"

    def __str__(self):
        return self.text[:50]

最佳答案

您的模型没有主键。但是它们是由 django 自动创建的。
您需要选择自动创建的主键类型
https://docs.djangoproject.com/en/3.2/releases/3.2/#customizing-type-of-auto-created-primary-keys (Django 3.2 中的新功能)
将其添加到 settings.py 中DEFAULT_AUTO_FIELD='django.db.models.AutoField'

class Topic(models.Model):
    id = models.AutoField(primary_key=True)
    ...

关于python-3.x - 在 Django 中未定义主键类型警告时使用的自动创建主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66971594/

相关文章:

python - 检查 python 中正在运行的子进程的标准输出

python - Pyglet Player.seek() 函数不工作?

python - Django make_aware 用法

Django 全文搜索按相关性顺序

django - 如何扩展 django 的 createsuperuser 管理命令?

python - 在整个天空的网格上绘制 FITS 图像

python - 在 Amazon Linux 上安装 psycopg2 时出错

django - 使 Django 的 "user"系统具有 "friends"的最佳方法

django - 如何从我的项目中卸载 dj-stripe?

django - 在 Django 1.8 上的 python3.5 中打印变量类型