66.django 中 filter 和 exclude 的區別
兩者取到的值都是QuerySet對象,filter選擇滿足條件的,exclude:排除滿足條件的.
67.django 中 values 和 values_list 的區別?
- values : queryset類型的列表中是字典
- values_list : queryset類型的列表中是元組
68.如何使用 django orm 批量創建數據?
objs=[models.Book(title="圖書{}".format(i+15)) for i in range(100)]
models.Book.objects.bulk_create(objs)
69.django 的 Form 和 ModeForm 的作用?
Form組件的主要功能如下:
生成頁面可用的HTML標簽 ——>只能生成獲取用戶信息的那些input標簽等
對用戶提交的數據進行校驗,返回錯誤提示信息
保留頁面上用戶輸入的內容
ModelForm組件,這個組件主要就是將model與Form組件的功能結合起來,可以更加便捷的對數據進行添加、編輯以及數據的驗證操作。相對於單獨的Form組價來說要方便很多。但是Form組件會比這個ModelForm組件更加靈活,如果在使用Django做web開發過程中驗證的數據和數據庫字段相關(可以對表進行增、刪、改操,注意 Many to many字段,也可以級聯操作第3張關系表;),建議優先使用ModelForm,用起來更方便些,但是在使用ModelForm的時候慎用fields='__all__',獲取數據庫所有字段勢必造成資源的浪費。
70.django 的 Form 組件中,如果字段中包含 choices 參數,請使用兩種方式 實現數據源實時更新。
- 1.重寫構造函數
def__init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields["city"].widget.choices = models.City.objects.all().values_list("id", "name")
- 2.利用ModelChoiceField字段,參數為queryset對象
authors = form_model.ModelMultipleChoiceField(queryset=models.NNewType.objects.all())//多選