[問題] django 無法修改model值

看板Python作者 (三重劉德華)時間12年前 (2013/05/16 20:41), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串1/3 (看更多)
各位先進你們好 我是初碰這一塊的新手 請問一下 為什麼我無法在下列被標記綠色的動作 修改我的filelength? length[i]內容是檔案的長度 假設陣列存放的數字是100 200 300 400 ... 我做了 attach[0].filelength = int(length[i]) 這行之後 filelength仍然存的是預設值? 請問我是遇到什麼問題? 另外為什麼 在一對多的情況下 message model中的 totallength 不用設預設值 而 message_attach中的 filelength 需要設? 會這麼問因為 如果message_attach不設預設值 會跑出 "message_attach.filelength may not be NULL"的錯物訊息 -- view.py try: mms = message.objects.get(token=token) attach =mms.message_attach_set.filter(index__exact=int(index[i]), seq__exact=int(seq[i])) try: tmpName = generateToken(FILENAME_LENGTH) +os.path.splitext( attach[0].realName)[-1] attach[0].file.save(tmpName, file) attach[0].filelength = int(length[i]) attach[0].save() ----- model.py ※message一些不相關的欄位沒有貼上來 class message(models.Model): totallength = models.PositiveIntegerField() sender = models.ForeignKey(User, related_name='out_mms') receivers = models.ManyToManyField(User, related_name='in_mms') def __unicode__(self): return '(%d)->%s' % (self.id, self.subject) admin.site.register(message) class message_attach(models.Model): index = models.PositiveSmallIntegerField() seq = models.PositiveSmallIntegerField() message = models.ForeignKey('message') file = models.FileField(upload_to='%Y/%m/%d', null=False) realName = models.CharField(max_length=255) filelength = models.PositiveIntegerField(default=0) ----- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.138.150.27

05/16 21:27, , 1F
先看一下 length[i] 的值是什麼
05/16 21:27, 1F
單純用字串顯示(%s) 會得到這樣子的回傳 [u'2000000', u'2000000']

05/16 22:49, , 2F
難道是unicode的問題造成的嗎?
05/16 22:49, 2F

05/17 07:54, , 3F
你是 print length 還是 print length[i] 啊?
05/17 07:54, 3F
print length 是 [u'2000000', u'2000000'] 如果是print length[i] 是[u'2000000'] 再如果有轉型態 print int(length[i]) 是 2000000 ※ 編輯: aiweisen 來自: 140.138.150.27 (05/17 10:05)
文章代碼(AID): #1HbDGDzP (Python)
文章代碼(AID): #1HbDGDzP (Python)