在我的models.py文件中,我有一個名爲'Problem'的類,它基本上存儲了一個問題,它的答案以及該問題的一些得分相關信息。下面是這個類的代碼:將Django模型字段保存到一個新文件
class Problem(models.Model):
def CreatePath(instance, filename):
return ('/' + instance.problemLevel + '.' + (instance.primary_key) + '.html')
# Use 'pkey' as problem ID
problemName = models.CharField('Problem Name',max_length=50)
problemText = RichTextField('Problem Statement',max_length=10000)
testCases = models.TextField('Test Cases',max_length=4000)
output = models.TextField('Test case result',max_length=4000)
problemLevel = models.IntegerField('Problem Level')
problemPoints = models.IntegerField('Points')
problemLink = models.FileField(upload_to=CreatePath, blank=True)
def save(self, *args, **kwargs):
self.problemLink = self.problemText
super(Problem, self).save(*args, **kwargs)
def __unicode__(self):
return self.problemName
用戶後進入通過管理頁面的問題(我使用的是CKEDITOR RTE的問題文本字段),我想Django的創建一個新的HTML頁面具體問題。假設我輸入problemLevel = 1的問題,並假設它是第一個問題,我希望將1.1.html存儲到我的問題(媒體)目錄中。所以我試圖使用一個FileField對象來達到這個目的,並且我稍微修改了save()模塊。但該文件沒有被創建。我運行內置的Django管理員shell來檢查problemLink的內容,並且它具有與problemText相同的內容。有人能告訴我我要去哪裏嗎? 我是Django的新手,如果有幫助的話!
我想避免查詢數據庫的開銷,然後在網站的用戶請求它們時分別渲染每個頁面。如果問題頁面已經保存爲html,我只需要按原樣顯示該頁面。以爲這會更有效率! – Nishad
有效點!在這種情況下,我建議在你的view方法中使用'@cache_page()'裝飾器。 查看文檔[here](https://docs.djangoproject.com/en/dev/topics/cache/#the-per-view-cache) – OllyTheNinja