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

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

第二次修改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

标签:django,models,数据库
0
投稿

猜你喜欢

  • python 网络编程详解及简单实例

    2021-09-02 06:40:56
  • js求一组数中的最大数

    2008-04-10 12:00:00
  • Python2.x版本中maketrans()方法的使用介绍

    2021-02-14 21:04:25
  • python中的json数据和pyecharts模块入门示例教程

    2023-02-22 04:58:37
  • mysql批量插入BulkCopy的实现

    2024-01-28 14:53:12
  • ASP万用分页程序

    2007-09-21 12:45:00
  • python嵌套函数使用外部函数变量的方法(Python2和Python3)

    2022-05-16 20:29:25
  • 通过Py2exe将自己的python程序打包成.exe/.app的方法

    2021-07-05 11:05:55
  • SQLServer中数据库文件的存放方式,文件和文件组

    2012-01-05 18:56:33
  • python+pytest接口自动化之token关联登录的实现

    2023-01-21 13:27:37
  • go 读取BMP文件头二进制读取方式

    2024-02-16 03:29:24
  • php删除路径下的所有文件夹和文件的代码

    2023-05-27 18:44:35
  • Go语言实现登录验证代码案例

    2024-05-08 10:24:14
  • pandas数值计算与排序方法

    2022-11-10 07:25:02
  • Python面向对象之私有属性和私有方法应用案例分析

    2021-08-19 07:08:29
  • 对numpy Array [: ,] 的取值方法详解

    2023-02-05 17:33:23
  • 对“关于购物车的想法”的一些回复

    2009-03-10 18:15:00
  • PyQt4 treewidget 选择改变颜色,并设置可编辑的方法

    2021-05-26 23:15:11
  • mssql2005字符串连接方法 避免无效的连接错误

    2024-01-14 20:45:05
  • vue实现引入本地json的方法分析

    2023-07-02 16:32:14
  • asp之家 网络编程 m.aspxhome.com