在我的models.py文件中,我有一个名为'Problem'的类,它基本上存储了一个问题,答案以及该问题的一些评分相关信息。这是该类的代码:
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的新手,如果有帮助的话!
答案 0 :(得分:0)
为什么要为它创建HTML页面?
通常在django中,您可以将数据存储在数据库中 - 正如您所做的那样 - 减去链接。
然后你有一个网址urls.py
e.g。 url(r"^(?P<problemLevel>\d+)/(?P<pk>)/$", views.showProblem)
将在您的views.py文件中调用showProblem(),当用户请求http://<yourserver>/1/1/
时,该文件将获取该信息并将其呈现为HTML。
这里的重要部分是当用户请求时,而不是在存储数据时,所有这些都会发生。