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
以上这篇django修改models重建数据库的操作就是小编分享给大家的全部内容了,希望能给大家一个参考
您可能感兴趣的文章:
- django修改models重建数据库
- django修改models.py后同步更新到数据库
- 第三百零七节,Django框架,models.py模块,数据库操作——表类容的增删改查
- Django 速成笔记(3)--Django models 数据库操作-增删改查-多对多关系以及一对多(外键)关系...
- django models 操作数据库遇到相关问题 Cannot add foreign key constrain
- Django中关于ORM数据库中的操作————(主要是models.py的设计(数据表的设计)与settings.py 的配置)
- Django 速成笔记(3)--Django models 数据库操作-增删改查-多对多关系以及一对多(外键)关系
- django 模型model与数据库3——高级操作(外联,多对多,修改字段)
- 第三百零八节,Django框架,models.py模块,数据库操作——链表结构,一对多、一对一、多对多
- Django中的Models和ORM的数据库同步操作
- django -- models数据库操作---字段及参数
- 如何在django中使用models.py对数据库进行操作
- 13.Django之数据库models&orm连表操作补充以及其他知识点补充(二)
- MySQL中新建用户,新建数据库,用户授权,删除用户,修改密码的相关操作
- 数据库表结构的修改与操作
- SqlServer编写数据库表的操作方式(建库、建表、修改语句)
- 线上mongodb 数据库用户到期时间修改的操作记录
- Django+mysql配置与简单操作数据库实例代码
- Android数据库高手秘籍(六)——LitePal的修改和删除操作
- ASP.NET对数据库的基本操作——插入,删除,修改(下)