Методы, которые я использую, не связаны? - PullRequest
2 голосов
/ 20 июля 2011

Я работаю над календарем через HTMLCalendar Python и Django. Функции, которые я использую для ввода данных в календарь, отображаются как несвязанные и поэтому не работают.

Вот код календаря:

from www.wednesday.models import Event
import calendar
e = Event()
class EventCal(calendar.HTMLCalendar):

    def formatday(self, day, weekday):
        if day == 0:
            return '<td class="noday">&nbsp;</td>' # Day outside month
        if day == e.dd():
            return '<td class="%s">%d</p><a href=\"%s\" target=\"_blank\">%s</a></td>' % (self.cssclasses[weekday], day, e.link(), e.res())
        else:
            return '<td class="%s">%d</td>' % (self.cssclasses[weekday], day)

class rendCal:
    c = EventCal(calendar.SUNDAY)

Вот мои модели.py:

from django.db import models

class Event(models.Model):
    Restaurant = models.CharField(max_length=200)
    LinkURL = models.CharField(max_length=200)
    created = models.DateTimeField(auto_now_add=True)
    DateDay = models.IntegerField(max_length=2)

    def dd(self):
        return '%i' % self.DateDay

    def link(self):
        return '%s' % self.LinkURL

    def res(self):
        return '%s' % self.Restaurant

И, наконец, мои views.py:

from django.shortcuts import render_to_response
import www.wednesday.models
from www.wednesday.cal import rendCal
import datetime as dt

def calendar(request):
    now = dt.datetime.now()
    cal = rendCal.c.formatmonth(now.year, now.month)
    return render_to_response('cal.html', {'calendar': cal})

Все работает, кроме функций из Event, которые вызываются внутри класса EventCal.

Очевидно, я совсем новичок в этом.

Хорошо, @Marcin попросил ошибку, это то, что я вижу, также я исправил заглавные буквы.

TypeError at /calendar/
unbound method dd() must be called with Event instance as first argument (got nothing instead)
cal.py in formatday, line 9

Переменные окружения в EventCal из Event отображаются пустыми, я уверен, что именно поэтому я получаю запросы о необходимости, а не об ошибке. Когда я изменяю e.dd () на статическое число, он возвращает все, кроме e.link () и e.res ().

Ответы [ 2 ]

5 голосов
/ 20 июля 2011

dd () - это метод экземпляра класса.

Вы называете это так:

e = Event()
x = e.dd()

Вы не можете применить dd к самому событию.

Я не уверен, что именно вы пытаетесь сделать, поэтому я не уверен, как вам нужно изменить код.

0 голосов
/ 20 июля 2011

В formatday у вас есть:

if day == 0:

, но также:

if day == Event.dd():

и Event.dd() возвращает строку.

Итак, day int или строка?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...