我在这里看到了很多关于它的问题,但仍然不明白这个话题。我的 model.py 中有一个 Task 类和一个 File 类:
class File(models.Model):
timestamp = models.DateTimeField()
file_name = models.CharField(max_length=140)
file = models.FileField(upload_to='task_files') # add separation by tasks
description = models.TextField()
class Meta:
ordering = ['timestamp']
def __unicode__(self):
return str(self.id)+" "+self.file_name
@models.permalink
def get_absolute_url(self):
return ('todoes.views.test_task',('one_time',str(self.id)),{})
# return ('food.views.restaurant_details', (), {'restaurant_id': [str(self.id)]})
# return ('food.views.restaurant_details', (str(self.id),), {})
class Task(models.Model):
name = models.CharField(max_length=140)
description = models.TextField()
# client = models.ForeignKey(Client)
priority = models.PositiveSmallIntegerField()
category = models.ForeignKey(Categories)
start_date = models.DateTimeField()
due_date = models.DateTimeField()
done_date = models.DateTimeField(blank = True, null = True)
when_to_reminder = models.DateTimeField()
# worker = models.ForeignKey(Worker)
worker = models.ForeignKey(Person, related_name = "worker_for_task",blank = True, null = True)
client = models.ForeignKey(Person, related_name = "client_for_task",blank = True, null = True)
resource = models.ForeignKey(Resource, blank = True, null = True)
note = models.ManyToManyField(Note, related_name = "for_task",blank = True, null = True)
file = models.ForeignKey(File, related_name = "for_task", blank = True, null = True)
percentage = models.PositiveSmallIntegerField()
pbu = models.ForeignKey(ProblemByUser)
pbw = models.ForeignKey(ProblemByWorker,blank = True, null = True)
confirmed = models.BooleanField(default=False)
confirmed_date = models.DateTimeField(blank = True, null = True)
children_task = models.ManyToManyField('Task',related_name = "parent_task",blank = True, null = True)
deleted = models.BooleanField(default=False)
acl = models.TextField(default=False)
def __unicode__(self):
return u";".join((str(self.id),self.name,"\t"+self.worker.fio))
class Meta:
ordering = ['priority','due_date']
我通过管理面板上传了任务文件,并希望显示该文件的链接:views.py
...
try:
if task_type == 'one_time':
files = File.objects.filter(for_task=task_full).order_by('-timestamp')
if task_type == 'regular':
files = File.objects.filter(for_regular_task=task_full).order_by('-timestamp')
except File.DoesNotExist:
files = ('Нет подходящих заметок',)
...
任务.html
<ul>
{% for file in files %}
<li> <a href="{{file.get_absolute_url}}">{{file.name}}</a>
{% endfor %}
</ul>
但我什么也没看到。我尝试用 shell 检查它并得到那个错误:
$ python manage.py shell
Python 2.7.2 (default, Dec 3 2011, 00:02:07)
[GCC 4.2.2 20070831 prerelease [FreeBSD]] on freebsd9
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from tasks.todoes.models import Note, Resource, File, Person, Task, ProblemByWorker, ProblemByUser, Categories, RegularTask
>>> files = File.objects.filter(for_task='102').order_by('-timestamp')
>>> file = files[0]
>>> file
<File: 1 ReklamaRestart.vbs>
>>> file.get_absolute_url
<bound method File.get_absolute_url of <File: 1 ReklamaRestart.vbs>>
>>> file.get_absolute_url()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/django/utils/functional.py", line 55, in _curried
return _curried_func(*(args+moreargs), **dict(kwargs, **morekwargs))
File "/usr/local/lib/python2.7/site-packages/django/db/models/base.py", line 887, in get_absolute_url
return settings.ABSOLUTE_URL_OVERRIDES.get('%s.%s' % (opts.app_label, opts.module_name), func)(self, *args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/django/db/models/__init__.py", line 35, in inner
return reverse(bits[0], None, *bits[1:3])
File "/usr/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 391, in reverse
*args, **kwargs)))
File "/usr/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 337, in reverse
"arguments '%s' not found." % (lookup_view_s, args, kwargs))
NoReverseMatch: Reverse for 'todoes.views.test_task' with arguments '('one_time', '1')' and keyword arguments '{}' not found.
我做错了什么?