网络编程
位置:首页>> 网络编程>> 数据库>> django修改models重建数据库的操作

django修改models重建数据库的操作

作者:yue492008824  发布时间:2024-01-12 21:58:07 

标签:django,models,数据库

第二次修改models.py以后再次

python manage.py makemigrations

提示如下

You are trying to add a non-nullable field 'address' to xc_users 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) 2) Qu

于是删除数据库表,继续报相同的错误

makemigration需要指定名称,然后migrate才能识别两次<span style="font-family: Arial, Helvetica, sans-serif;">makemigrations的不同</span>

python manage.py makemigrations --name sqlname

然后再执行:

python manage.py migrate

成功解决问题!

补充知识:django rest framework如何一次性序列化同一个数据库下多个model表数据在一个json页面下

在django项目中,首先我们要安装django-rest-mutiple-models

pip install django-rest-multiple-models

然后在setting配置中配置一下APP


INSTALLED_APPS = (
....
'drf_multiple_model',
)


在我们的views视图函数下引入

from drf_multiple_model.views import ObjectMultipleModelAPIView

如下两个模型


class Play(models.Model):
genre = models.CharField(max_length=100)
title = models.CharField(max_length=200)
pages = models.IntegerField()

class Poem(models.Model):
title = models.CharField(max_length=200)
style = models.CharField(max_length=100)
lines = models.IntegerField()
stanzas = models.IntegerField()

序列化如下


class PlaySerializer(serializers.ModelSerializer):
class Meta:
model = Play
fields = ('genre','title','pages')

class PoemSerializer(serializers.ModelSerializer):
class Meta:
model = Poem
fields = ('title','stanzas')

views中我们可以这么写,继承一个ObjectMutipleModelAPIView


from drf_multiple_model.views import ObjectMultipleModelAPIView

class TextAPIView(ObjectMultipleModelAPIView):
querylist = [
{'queryset': Play.objects.all(), 'serializer_class': PlaySerializer},
{'queryset': Poem.objects.filter(style='Sonnet'), 'serializer_class': PoemSerializer},
....
]

如果我们使用的url是router,那这里我们就应该继承ObjectMutipleModelAPIViewset

具体的引入

from drf_multiple_model.viewsets import ObjectMultipleModelAPIViewSet

DRF页面的显示效果如下


{
"Play" : [
{"genre": "Comedy", "title": "A Midsummer Night"s Dream", "pages": 350},
{"genre": "Tragedy", "title": "Romeo and Juliet", "pages": 300},
....
],
"Poem" : [
{"title": "Shall I compare thee to a summer"s day", "stanzas": 1},
{"title": "As a decrepit father takes delight", "stanzas": 1},
....
],
}

效果就是能在一个json页面下序列化出多个不同的model数据

我们还可以对每个表的数据进行分页

from drf_multiple_model.pagination import MultipleModelLimitOffsetPagination

views下可以这么写

class LimitPagination(MultipleModelLimitOffsetPagination):
default_limit = 10

意思是每个model默认显示前十条数据

如果前端需要,url上可以加上limit=5,自定义默认显示前五条数据

更多详细内容,github搜索DjangoRestMultipleModels

来源:https://blog.csdn.net/yue492008824/article/details/51263373

0
投稿

猜你喜欢

  • 从这节开始,将会给大家介绍几个ASP中的三大通用类,它贯穿于我所设计的三层架构中,是对ASP语法的扩展,可以提高很多细节处理上的效率,可以算
  • 用程序来处理图像和办公文档经常出现在实际开发中,Python的标准库中虽然没有直接支持这些操作的模块,但我们可以通过Python生态圈中的第
  • 元数据简介元数据 (metadata) 最常见的定义为“有关数据的结构数据”,或者再简单一点就是“关于数据的信息”,日常生活中的图例、图书馆
  • 1、找到mysql安装路径D:\xxx\MYSQL\MySQL Workbench CE 6.0.8下的mysqldump.exe,由于脚本
  • 一、 模块1、模块的概念模块是 Python 程序架构的一个核心概念每一个以扩展名 py 结尾的 Python 源代码文件都是一个 模块模块
  • 在上一篇文章中,我们讲了如何在linux上用python写一个守护进程。主要原理是利用linux的fork函数来创建一个进程,然后退出父进程
  • 本节在这里主要说的是URLError还有HTTPError,以及对它们的一些处理。1.URLError首先解释下URLError可能产生的原
  • Simhash的算法简单的来说就是,从海量文本中快速搜索和已知simhash相差小于k位的simhash集合,这里每个文本都可以用一个sim
  • XML即可扩展标记语言(eXtensible Markup Language)。标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可
  • 在Matlab使用Plot函数实现数据动态显示方法总结中介绍了两种实现即时数据动态显示的方法。考虑到使用python的人群日益增多,再加上本
  • PDO::rollBackPDO::rollBack — 回滚一个事务(PHP 5 >= 5.1.0, PECL pdo >=
  • 方法一 <%dim total(7,3)  total(1,0)="ASP之家"&n
  • 问题现象元素的属性中没有id、name;虽然有class,但比较大众化,且位置也不固定;例如:页码中的下一页;那该如何找到该元素?<a
  • 经常看到有新手问PHP有没有类似asp的left函数或right函数,实现截取某字符串左边或右边开始N个字符的函数。答案当然是有的。PHP中
  • 本文实例讲述了Python实现处理管道的方法。分享给大家供大家参考。具体分析如下:Linux下的可以施展的最炫的魔法是什么?相信不同的人说法
  • 本文实例讲述了Python切片操作。分享给大家供大家参考,具体如下:在很多编程语言中,针对字符串提供了截取函数,其实目的就是对字符串切片。P
  • 函数:endswith()作用:判断字符串是否以指定字符或子字符串结尾,常用于判断文件类型相关函数:判断字符串开头 startswith()
  • Python报错:对象不存在此属性保错代码:我就搞不懂了,怎么会没有此属性② 原因:Python报错位置不对③总结下:在给对象属性赋值的时候
  • pip是Python包管理工具,该工具提供了对Python包的查找、下载、安装、卸载的功能。使用pip安装插件sudo pip3&
  • 本文实例讲述了Python使用matplotlib实现交换式图形显示功能。分享给大家供大家参考,具体如下:一 代码from random i
手机版 网络编程 asp之家 www.aspxhome.com