2

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-sortingは{%anchor arg%}を使用してそれを実行しますが、そのフィールドを管理する方法がわかりません...どのように実行しますか?

ご回答ありがとうございます。

4

1 に答える 1

0

Event のインスタンスを 1 つだけ返すのに、なぜクエリセットをendフィールドでソートするのでしょうか?get_first_future_date

ええと、私はdjango-sortingを使ったことはありませんが、使うと思います

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 %}

それはあなたが求めていたものですか?

于 2012-05-20T22:49:14.177 に答える