Python学习——Django数据库迁移冲突

在Django框架学习中,数据库迁移时可能遇到迁移冲突问题。本文通过实例讲解如何处理因添加外键导致的迁移冲突。首先创建Users和courses表并成功迁移,接着尝试为courses表添加外键,此时出现迁移冲突。解决方法包括:停止进程,删除已有表和迁移信息,从数据库删除迁移记录,最后清理迁移文件,重新执行迁移操作即可避免冲突。
摘要由CSDN通过智能技术生成

我们在学习框架的时候不可避免的要用到数据库,所以框架主要就是和数据库打交道,但是在进行数据迁移的时候难免会出现一点小BUG,此以Django为例,进行二次数据库迁移的时候可能会出现迁移文件已经存在,迁移信息冲突的问题吗,或者是数据库表已经存在,都会报错。我们今天讲的就是迁移信息冲突的问题。

You are trying to add a non-nullable field 'u_c' to courses without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
 1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
 2) Quit, and let me add a default in models.py
Select an option: ^CTraceback (most recent call last):

报了这个错我们怎么办呢?不要急,我们下面举个例子来说明一下怎么解决。(不过要是删库的话也不是不可以,强烈建议不要删库,道理应该懂的)
举个例子吧:第一步:我们先创建两个表,分别是Users和courses

代码如下:
from django.db import models

# Create your models here.
class Users(models.Model):
    u_name = models.CharField(max_length=32)
    u_age = models.CharField(max_
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是Python中使用Django进行通讯录制作的步骤: 1. 创建Django项目 使用以下命令创建Django项目: ``` django-admin startproject myaddressbook ``` 2. 创建Django应用 使用以下命令创建Django应用: ``` python manage.py startapp contacts ``` 3. 配置数据库 打开myaddressbook/settings.py文件,配置数据库: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } ``` 这里我们使用sqlite3数据库,如果你想使用其他数据库,需要在此处进行相应的配置。 4. 创建模型 在contacts/models.py文件中定义Contact模型: ```python from django.db import models class Contact(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30) email = models.EmailField() phone = models.CharField(max_length=20) def __str__(self): return f'{self.first_name} {self.last_name}' ``` 5. 迁移数据库 运行以下命令迁移数据库: ``` python manage.py makemigrations python manage.py migrate ``` 6. 创建视图 在contacts/views.py文件中创建ContactListView视图: ```python from django.views.generic import ListView from .models import Contact class ContactListView(ListView): model = Contact ``` 7. 创建URL 在myaddressbook/urls.py文件中创建URL: ```python from django.urls import path from contacts.views import ContactListView urlpatterns = [ path('', ContactListView.as_view(), name='contact_list'), ] ``` 8. 运行服务器 使用以下命令运行Django服务器: ``` python manage.py runserver ``` 现在你可以在浏览器中访问http://127.0.0.1:8000/,就可以看到通讯录列表了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值