django修改models重建數(shù)據(jù)庫的操作
第二次修改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
于是刪除數(shù)據(jù)庫表,繼續(xù)報相同的錯誤
makemigration需要指定名稱,然后migrate才能識別兩次<span style="font-family: Arial, Helvetica, sans-serif;">makemigrations的不同</span>
python manage.py makemigrations --name sqlname
然后再執(zhí)行:
python manage.py migrate
成功解決問題!
補充知識:django rest framework如何一次性序列化同一個數(shù)據(jù)庫下多個model表數(shù)據(jù)在一個json頁面下
在django項目中,首先我們要安裝django-rest-mutiple-models
pip install django-rest-multiple-models
然后在setting配置中配置一下APP
INSTALLED_APPS = ( .... 'drf_multiple_model', )
在我們的views視圖函數(shù)下引入
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數(shù)據(jù)
我們還可以對每個表的數(shù)據(jù)進行分頁
from drf_multiple_model.pagination import MultipleModelLimitOffsetPagination
views下可以這么寫
class LimitPagination(MultipleModelLimitOffsetPagination):
default_limit = 10
意思是每個model默認顯示前十條數(shù)據(jù)
如果前端需要,url上可以加上limit=5,自定義默認顯示前五條數(shù)據(jù)
更多詳細內容,github搜索DjangoRestMultipleModels
以上這篇django修改models重建數(shù)據(jù)庫的操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python pandas DataFrame操作的實現(xiàn)代碼
這篇文章主要介紹了Python pandas DataFrame操作的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-06-06Python Pygame實現(xiàn)兔子獵人守護城堡游戲
這篇文章主要介紹了用python來制作的一個守護類小游戲兔子獵人守護城堡,文中的示例代碼介紹得很詳細,感興趣的小伙伴快來跟隨小編一起學習學習吧2021-12-12Python利用watchdog模塊監(jiān)控文件變化
這篇文章主要為大家介紹一個Python中的模塊:watchdog模塊,它可以實現(xiàn)監(jiān)控文件的變化。文中通過示例詳細介紹了watchdog模塊的使用,需要的可以參考一下2022-06-06