0

我在这里看到了很多关于它的问题,但仍然不明白这个话题。我的 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.

我做错了什么?

4

0 回答 0