Django комментирует «настраиваемое поле» с помощью Django-сортировки - PullRequest
2 голосов
/ 17 мая 2010

Я должен показывать записи по дате в приложении django, и я немного заблокирован: Вот пример моих моделей:

class Event(models.Model):  
    name = models.CharField(max_length=100)  
    theme = models.ForeignKey(Theme)
    ...

class Date(models.Model):  
    event = models.ForeignKey(Event)  
    start = models.DateField()  
    end = models.DateField()

    class Meta:
        ordering = ['start', 'end']
        unique_together = ['event', 'start']

Я получил представление, которое принимает все события в базе данных: Event.objects.all ()

и затем в шаблоне я показываю список событий с их темой и другие вещи, такие как дата начала. Я хотел бы показать в списке первую «будущую» дату, это легко сделать с помощью специального метода для модели события:

def get_first_future_date(self):
    today = datetime.datetime.now()
    dates = self.date_set.filter(end__gte=today)
    if dates:
        return dates[0]

Этот метод - первая будущая дата или самая старая дата, которая еще не закончена.
Here's the problem : I would like to show that field in my template and be able to sort it with django-sorting.

Django-сортировка использует {% anchor arg%}, но я не знаю, как управлять этим полем в нем ... Как бы вы это сделали ???

Заранее спасибо за любой ответ.

1 Ответ

0 голосов
/ 21 мая 2012

Ваш вопрос неясен, зачем сортировать набор запросов по полю end, когда get_first_future_date возвращает только один экземпляр Event?

Ну, я никогда не использовал сортировку django, но я предполагаю, что я бы сделал

events = Event.objects.all() # or filter(...)
# pass events to the template context

а затем в шаблоне

{% load sorting_tags %}
{% autosort events %}
<thead>
   <th>{% anchor start Starting at %}</th>
   <th>{% anchor end Ending at %}</th>
    ...
</thead>
{% for event in events %}
<tr>
    <td>{{event.start}}</td>
    ...
</tr>
{% endfor %}

Это то, что вы просили?

...