django给sqlite自带的user表添加字段(django+pycharm+ubuntu+sqlite3)

一、原理:

基于sqlite自带的user表就继承自AbstractUser,我们可以通过继承内置的 AbstractUser 类,来定义一个自己的user表,即可根据项目需求灵活的设计用户表,又能使用Django强大的认证系统。

二、前期准备:

(运行是通过ubuntu的anaconda环境运行的)

1、确保删除之前sqlite3里创建的所有数据表

以下是SQLiteStudio实现可视化,但并无法对导入的数据表进行操作

因此,我们可以通过ubuntu(xshell连接)进入内置sqlite运行命令行:sqlite3  你的sqlite3数据库

删除所有表:(drop table 表名;)

2、删除你的所有app的migrations下除__init__.py外的所有文件。

3、确认所有清理完成后,再在相应文件编写代码如下:

你的app下的models.py:(注意了,不可以用原来的表名user即不可建立model名为User,这里用的是UserInfo

from django.contrib.auth.models import AbstractUser
# 新用户表
class UserInfo(AbstractUser):
    username = models.CharField(max_length=50, verbose_name='用户名', unique=True)#用户名
    password = models.CharField(max_length=100,verbose_name= '密码')#密码
    qq = models.CharField(max_length=20, verbose_name='QQ号')#qq
    email = models.EmailField(max_length=254)#邮箱
    name=models.CharField(max_length=50,verbose_name='姓名')#真实姓名
    gender = models.CharField(choices=(('male', '男'), ('female', '女')), default='female', max_length=5)#性别
    age=models.IntegerField(verbose_name='年龄')#年龄
    image = models.ImageField(upload_to='img/%Y/%m', max_length=100)#/media/img/上传头像
    # role = models.CharField(max_length=10, default='user', choices=(('user', '普通用户'), ('admin', '管理员'), ('vip', 'VIP')))
    last_active = models.DateField(auto_now_add=True)#最后活动时间
    created_time = models.DateTimeField(auto_now_add=True)#创建时间
    last_login = models.DateTimeField(null=True)#登录时间

    class Meta:
        ordering = ['-id']
        verbose_name = '用户信息'
        verbose_name_plural = '用户信息'

    def __str__(self):
        return self.username

2、修改settings.py增加AUTH_USER_MODEL=你的app名.UserInfo参数,即是告诉Django,现在使用新定义的UserInfo表来做用户认证:

还有,上传图片的:

3、要在你的app下的admin.py登记注册,不然密码会变成明文,无法加密存储:

from . import models
from django.contrib.auth.admin import UserAdmin
admin.site.register(models.UserInfo, UserAdmin)

将以上文件上传好

三、创建新用户表

运行以下命令:

python  manage.py   makemigrations

python  manage.py   migrate

效果如下:

四、有可能出现的问题

到这里已经差不多成功了,但是运行时有可能还会报错:

raise ValueError("Dependency on app with no migrations: %s" % key[0])

ValueError: Dependency on app with no migrations: index

打开PyCharm的manage.py Task,

输入:makemigrations  你的APP名(这里应是makemigrations  index,以下为例子不符合这里,仅作示例),如下:

最后再运行:python  manage.py   migrate,迁移数据就可以更新数据库了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在PyCharm的终端中安装sqlite3,你可以按照以下步骤进行操作: 1. 确保你已经在PyCharm中打开了你的项目。 2. 打开PyCharm的终端,可以通过点击底部工具栏中的"Terminal"按钮或者使用快捷键Ctrl + Alt + T。 3. 在终端中输入以下命令来安装sqlite3: ``` pip install pysqlite3 ``` 这将使用pip工具来安装pysqlite3库,它是Python中与SQLite数据库交互的标准库。 4. 安装完成后,你就可以在PyCharm的终端中使用sqlite3命令了。 请注意,如果你在终端中仍然遇到类似的错误信息,可能是因为sqlite3命令没有在系统的环境变量中找到。在这种情况下,你可以尝试使用完整的路径来运行sqlite3命令。你可以在终端中输入以下命令来查找sqlite3的路径: ``` where sqlite3 ``` 然后,将找到的路径添加到系统的环境变量中,这样就可以在终端中直接使用sqlite3命令了。 希望这个解决方案对你有帮助! #### 引用[.reference_title] - *1* [pycharm中Terminal输入sqlite3,出现无法将sqlite项识别为cmdlet**的解决方法](https://blog.csdn.net/qq_30068487/article/details/131283344)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [pycharm创建django项目、子项目、sqlite3及静态资源](https://blog.csdn.net/qq_43143469/article/details/119296191)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惊弦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值