django問題集錦

問題1:Running migrations: No migrations to apply.(django不能創(chuàng)建數(shù)據(jù)庫中的表的問題)

解決:

第一步:
刪除該app名字下的migrations下的init.py等文件每辟。
第二步:
進(jìn)入數(shù)據(jù)庫岖圈,找到django_migrations的表富腊,刪除該app名字的所有記錄。
第三步:執(zhí)行下面這兩條命令:(在項目目錄下)

python manage.py makemigrations

python manage.py migrate

原因:
django_migrations表記錄著數(shù)據(jù)庫的對應(yīng)表的修改記錄。

每次修改后,都執(zhí)行第三步的命令,然后在第一步的文件夾下生成修改的文件,django_migrations表記錄修改的變更過程鸠补。

問題2: list和str互轉(zhuǎn)

解決:

1.list->str

一:需要注意的是該方法需要list中的元素為字符型


image.png

二:若是整型,則需要先轉(zhuǎn)換為字符型后再轉(zhuǎn)為str類型嘀掸。


image.png
2.str->list

2紫岩、str轉(zhuǎn)list
假設(shè)有一個名為test_str的str,轉(zhuǎn)換后的list名為test_list
則轉(zhuǎn)換方法:
test_list=list(test_str)
例子:

問題3:Django 批量刪除

解決:

array = self.request.data.get('ids', None)
        if array:
            """批量刪除"""
            try:
                arrayStr = ','.join([str(x) for x in array])
                models.Profile.objects.extra(where=['id IN (' + arrayStr + ')']).delete()
            except:
                return ReturnData(message="ID不存在", statusCode=status.HTTP_400_BAD_REQUEST)
            return ReturnData( statusCode=status.HTTP_204_NO_CONTENT)

問題4:在Makemigrations 時出現(xiàn) :AttributeError:'NoneType'對象沒有屬性'is_relation' - None未定義

解決:

.....
  File "E:\new_tdms\tdms\tdms_env\lib\site-packages\django\db\migrations\graph.py", line 376, in make_state
    project_state = self.nodes[node].mutate_state(project_state, preserve=False)
  File "E:\new_tdms\tdms\tdms_env\lib\site-packages\django\db\migrations\migration.py", line 85, in mutate_state
    operation.state_forwards(self.app_label, new_state)
  File "E:\new_tdms\tdms\tdms_env\lib\site-packages\django\db\migrations\operations\fields.py", line 148, in state_forwards
    delay = not old_field.is_relation
AttributeError: 'NoneType' object has no attribute 'is_relation'

鼠標(biāo)打開E:\new_tdms\tdms\tdms_env\lib\site-packages\django\db\migrations\operations\fields.py文件睬塌。在文件中添加如下語句:

image.png

再次進(jìn)行python manage.py makemigrations <你的app名字>
image.png

從圖片中可以看出來在users 應(yīng)用下profile表單的user_email字段存在問題泉蝌,old_field不在數(shù)據(jù)庫中了歇万。找到了這個遷移:


image.png

把這個遷移刪除,然后運行makemigrations 成功梨与,


image.png

如果還報上面的錯誤說明還有字段出現(xiàn)這樣的錯誤堕花,按照上面的方法一個個解決掉就OK了,祝大家工作愉快粥鞋。

問題5:django中不同App之間調(diào)用model缘挽,出現(xiàn)問題ValueError: attempted relative import beyond top-level package

解決辦法:

在項目的setting.py中 添加sys.path.insert(0, os.path.join(BASE_DIR, '你app路徑'))
image.png

然后在需要調(diào)用的地方 引用


image.png

問題6:DateTimeField received a naive datetime … while time zone support is active.

解決辦法:

將項目的setting.py 中USE_TZ = True改成 False
image.png

問題7:序列化需要序列化**.objects.filter()

解決辦法:

serializer.MenuSerializer(menuAll, many=True)   #加上many=True序列化列表

問題8:合并querySet

1.合并同一個model的多個QuerySet 的話,是可以采用這種方式的.

QuerySet = QuerySet1 | QuerySet2

返回querySet
2.用chain 來實現(xiàn)呻粹,即使是不同的MODEL中查詢出來的數(shù)據(jù)壕曼,都可以合并到一個 list 中去.

QuerySet = chain(QuerySet1, QuerySet2)

返回iterator

問題9:The number of GET/POST parameters exceeded settings.DATA_UPLOAD_MAX_NUMBER_FIELDS.

解決:

如果您的settings.py存在DATA_UPLOAD_MAX_NUMBER_FIELDS等浊,則將其值更改為更高的值腮郊,或者如果不存在,則將其添加到settings.py:

DATA_UPLOAD_MAX_NUMBER_FIELDS = 10240 # higher than the count of fields

問題10:django 后臺ImageField字段類型使用element組件庫的el-upload方法實現(xiàn)圖片上傳:

                <el-upload
                  class="upload-demo"
                  :action= "imgUrl"    //接口路徑
                  :headers="headers"   //請求頭
                  :on-preview="handlePreview"
                  :on-remove="handleRemove"
                  :before-remove="beforeRemove"
                  accept="image/*"   //文件類型
                  multiple
                  :limit="3"
                  :on-exceed="handleExceed"
                  :file-list="fileList"
                  name='img'>   //字段名稱
                  <el-button size="small" type="primary">點擊上傳</el-button>
                  <div slot="tip" class="el-upload__tip">只能上傳jpg/png文件筹燕,且不超過500kb</div>
                </el-upload>


<script type="text/ecmascript-6">
      export default {
        data() {
          return {
              headers:{
                // "Content-Type": "multipart/form-data",
              Authorization: 'JWT '+localStorage.getItem('token')
              },
              imgUrl:'你的接口地址'
          }
      }
  }

問題11:django 保存的時間與當(dāng)前時間不一致

解決:

  • 在Django的配置文件settings.py中轧飞,有兩個配置參數(shù)是跟時間與時區(qū)有關(guān)的,分別是TIME_ZONE和USE_TZ
  • 如果USE_TZ設(shè)置為True時撒踪,Django會使用系統(tǒng)默認(rèn)設(shè)置的時區(qū)过咬,即America/Chicago,此時的TIME_ZONE不管有沒有設(shè)置都不起作用制妄。
  • 如果USE_TZ 設(shè)置為False掸绞,而TIME_ZONE設(shè)置為None,則Django還是會使用默認(rèn)的America/Chicago時間耕捞。若TIME_ZONE設(shè)置為其它時區(qū)的話衔掸,則還要分情況,如果是Windows系統(tǒng)俺抽,則TIME_ZONE設(shè)置是沒用的敞映,Django會使用本機(jī)的時間。如果為其他系統(tǒng)磷斧,則使用該時區(qū)的時間驱显,入設(shè)置USE_TZ = False, TIME_ZONE = 'Asia/Shanghai', 則使用上海的UTC時間。

問題12:django.core.exceptions.FieldError: Related Field got invalid lookup: icontains

解決:

  • 這是在兩個實體table中瞳抓,外鍵引用以后,views中添加search框出現(xiàn)的問題伏恐,來看看情況 :
models.py:
class Product(models.Model):
    name = models.CharField('product name', max_length=30)
Order(models.Model):
    product = models.ForeignKey("Product") #外鍵引用產(chǎn)品類
views.py:
class OrderViewSet(viewsets.ModelViewSet):
    search_fields = ('product',)  #問題就是出在這里

調(diào)用接口進(jìn)行search就會出現(xiàn)上面問題
解決辦法:

  • 修改views.py 如下:
class OrderViewSet(viewsets.ModelViewSet):
    search_fields = ('product__name',)  #問題就是出在這里
作為外鍵django默認(rèn)是把id和order類關(guān)聯(lián)孩哑,這里不能直接寫product , 而是product的一個具體字段翠桦,product是個對象横蜒,沒法直接查詢胳蛮。

注! 這里是兩個下劃線 product__name

問題13:django.db.utils.DatabaseError: ORA-01430: column being added already exists in table

解決:

問題提示migrate 文件引用了其他app的migrate文件丛晌,而數(shù)據(jù)庫已經(jīng)存在其他app的migrate中表的字段仅炊,只需將引用代碼注釋即可。


TIM圖片20181106103659.png

問題13:non-default argument follows default argument

解決:

錯誤原因是將沒有默認(rèn)值的參數(shù)在定義時放在了有默認(rèn)值的參數(shù)的后面

問題14:urllib3.exceptions.MaxRetryError: HTTPConnectionPool Max retries exceeded with url:Failed to establi

解決:

錯誤原因http連接太多沒有關(guān)閉導(dǎo)致的

問題15:pandas.read_csv() 報錯 OSError: Initializing from file failed

解決:

這個參數(shù)中有中文澎蛛,但是Python3不是已經(jīng)支持中文了嗎抚垄?參考了錯誤原因和pandas的源碼,發(fā)現(xiàn)調(diào)用pandas的read_csv()方法時谋逻,默認(rèn)使用C engine作為parser engine呆馁,而當(dāng)文件名中含有中文的時候,用C engine在部分情況下就會出錯毁兆。所以在調(diào)用read_csv()方法時指定engine為Python就可以解決問題了浙滤。
da4=pd.read_csv('F:\\數(shù)據(jù)源\\工程清單.csv',engine='python')
另外一種解決方法,就是使員工open函數(shù)打開文件气堕,再取訪問里面的數(shù)據(jù):
da3=pd.read_csv(open('F:\\4.0 居配工程監(jiān)測\\2.0 數(shù)據(jù)源\\02.南京新居配工程清單.csv'))

問題15:類型錯誤纺腊。期望為主鍵,獲得的類型為 Model,

解決:

將傳入的模型數(shù)據(jù)改為模型主鍵project => project.bt_project_number

問題16:ORA-00001: unique constraint () violated 主鍵

解決:

序列化時出現(xiàn)不存在的字段茎芭,導(dǎo)致序列化時出現(xiàn)問題揖膜。

問題17:http請求時,請求數(shù)組參數(shù)顯示為filterData[]: 1骗爆,應(yīng)該顯示為filterData: [1]

解決:

將請求參數(shù)使用JSON.stringify(vm.checkList) 次氨,將對象轉(zhuǎn)換為數(shù)據(jù)。

問題18:http接口GET請求時摘投,請求傳入數(shù)組煮寡,后臺接收變?yōu)樽址?/h4>

解決:

這是GET請求的機(jī)制,將數(shù)組轉(zhuǎn)化為字符串拼在URL后面犀呼。解決方法:
1:在后臺將字符串轉(zhuǎn)化為數(shù)組(麻煩)
2:把GET請求修改為POST 請求

問題19:Got AttributeError when attempting to get a value for field **字段** on serializer Serializer.The serializer field might be named incorrectly and not match any attribute or key on the ManyRelatedManager instance.Original exception text was: 'ManyRelatedManager' object has no attribute '字段'.

解決:

存在manytomany的字段幸撕,在序列化時沒有進(jìn)行 many=True

問題20:django_crontab ModuleNotFoundError: No module named 'fcntl'

解決:

django_crontab不支持在windows使用,需要linux上開發(fā)的外臂。

問題21:TypeError: unsupported operand type(s) for +: 'int' and 'str'

解決:

python 語法將int類型轉(zhuǎn)換成str不能用 a+' '坐儿,需使用str(a)

問題22:自己指向自己多對多

1.models.py

class Product(models.Model):
    """
    商品
    """
    name = models.CharField(max_length=30, verbose_name='商品名稱')
    product_category = models.ForeignKey(ProductCategory, verbose_name='商品分類', on_delete=models.CASCADE)
    related_product = models.ManyToManyField('self', verbose_name='關(guān)聯(lián)推薦商品',
                                             null=True, blank=True, symmetrical=False)

    add_time = models.DateTimeField(default=datetime.now, verbose_name='添加時間')

商品類related_produce字段設(shè)計成ManyToManyField,并指向自己宋光。
symmetrical=False為當(dāng)多對多關(guān)系對應(yīng)自己時貌矿,建立關(guān)系時不需要迭代插入。
例:
symmetrical=True:商品1關(guān)聯(lián)了商品2罪佳,則商品2也關(guān)聯(lián)了商品1
symmetrical=False:商品1關(guān)聯(lián)了商品2逛漫,商品2不關(guān)聯(lián)商品1
這里由于為關(guān)聯(lián)推薦商品,故設(shè)置其為Flase赘艳。

問題23:RuntimeError: No job with hash found. It seems the crontab is out of sync with your settings.CRONJOBS. Run "python manage.py crontab add" again to resolve this issue!

解決:定時器日志不要出現(xiàn)重復(fù)的

問題24:數(shù)據(jù)庫連接方式

1:使用SID方式

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.oracle',
            'NAME': '',  # 數(shù)據(jù)庫名稱
            'USER': '',  # 用戶名
            'PASSWORD': '',  # 密碼
            'HOST': '',  # HOST
            'PORT': '',  # 端口
            'charset': 'utf8'
        },
    }

2:使用service name方式

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.oracle',
            'NAME': 'HOST:PORT/NAME',  # 數(shù)據(jù)庫名稱 如果連接方式為service name 注意:HOST和PORT鍵需要從字典中刪除-否則Django會嘗試使用完整的“ NAME”作為SID進(jìn)行連接酌毡。
            'USER': '',  # 用戶名
            'PASSWORD': '',  # 密碼
            'charset': 'utf8'
        },
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末克握,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子枷踏,更是在濱河造成了極大的恐慌菩暗,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旭蠕,死亡現(xiàn)場離奇詭異停团,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)下梢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門客蹋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人孽江,你說我怎么就攤上這事讶坯。” “怎么了岗屏?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵辆琅,是天一觀的道長。 經(jīng)常有香客問我这刷,道長婉烟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任暇屋,我火速辦了婚禮似袁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咐刨。我一直安慰自己昙衅,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布定鸟。 她就那樣靜靜地躺著而涉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪联予。 梳的紋絲不亂的頭發(fā)上啼县,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機(jī)與錄音沸久,去河邊找鬼季眷。 笑死,一個胖子當(dāng)著我的面吹牛卷胯,可吹牛的內(nèi)容都是我干的瘟裸。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼诵竭,長吁一口氣:“原來是場噩夢啊……” “哼话告!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起卵慰,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤沙郭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后裳朋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體病线,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年鲤嫡,在試婚紗的時候發(fā)現(xiàn)自己被綠了送挑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡暖眼,死狀恐怖惕耕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情诫肠,我是刑警寧澤司澎,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站栋豫,受9級特大地震影響挤安,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜丧鸯,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一蛤铜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧丛肢,春花似錦围肥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至派敷,卻和暖如春蛹批,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背篮愉。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工腐芍, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人试躏。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓猪勇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親颠蕴。 傳聞我的和親對象是個殘疾皇子泣刹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容