将Django模型字段保存到新fi中

2024-04-25 00:40:41 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的模型.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

在用户通过管理页面输入问题后(我在problem文本字段中使用Ckeditor RTE),我希望Django为该特定问题创建一个新的html页面。假设我输入problemLevel=1的问题,假设它是第一个问题,我希望1.1.html存储到problems(media)目录中。因此,我尝试使用一个FileField对象来实现这个目的,并稍微修改了save()模块。但是文件没有被创建。我运行了内置的Django管理shell来检查problemLink的内容,它的内容与problemText相同。有人能告诉我我哪里出错了吗? 我是Django新手,如果有帮助的话!在


Tags: 文件djangoinstanceselfmodelssavedefhtml
1条回答
网友
1楼 · 发布于 2024-04-25 00:40:41

为什么要为它创建一个HTML页面?在

通常在django中,您会将数据存储在数据库中,就像您所做的那样,去掉链接。在

那么你就有了一个网址网址.py在

例如url(r"^(?P<problemLevel>\d+)/(?P<pk>)/$", views.showProblem)

它将在视图.py文件,当用户请求http://<yourserver>/1/1/时,它将获取信息并为用户呈现为HTML。在

这里重要的一点是,所有这些都发生在用户请求时,而不是存储数据时。在

相关问题 更多 >