3

私はこれらのような2つのモデルを持っています:

class Schedule(models.Model):
    name = models.CharField(_('name'), blank=True, max_length=15)


class Day(models.Model):
    DAYS_OF_THE_WEEK = (
        (0, _('Monday')),
        (1, _('Tuesday')),
        (2, _('Wednesday')),
        (3, _('Thursday')),
        (4, _('Friday')),
        (5, _('Saturday')),
        (6, _('Sunday')),
    )
    schedule = models.ForeignKey(Schedule, blank=True, null=True, verbose_name=_('schedule'))
    day = models.SmallIntegerField(_('day'), choices=DAYS_OF_THE_WEEK)
    opening = models.TimeField(_('opening'), blank=True)
    closing = models.TimeField(_('closing'), blank=True)

スケジュールには、次のように2つのDayオブジェクトを含めることができます。

Day(schedule = 1、day = 0、opening = datetime.time(7、30)、closeing = datetime.time(10、30))Day(schedule = 1、day = 0、opening = datetime.time(12、 30)、closeing = datetime.time(15、30))

同じ日の異なるシフトのように。

ここでそれらを繰り返すと、0日目の2つのエントリが取得されます。たとえば、[スケジュールの日] [0、0、1、2、3、4、5、6]

クエリセットを作成して、同じ日をグループ化し、それらの属性を保持するにはどうすればよいですか?

[day for day in schedule]
[0 (two entries), 1, 3, 4, 5, 6]

多分何かのような

[id: [day], id: [day]]
4

2 に答える 2

5

私が最終的に使用したコードは次のとおりです。

from itertools import groupby

day_set = store.schedule_set.all()[0].day_set.all()
    schedule = dict()
    for k, v in groupby(day_set, lambda x: x.day):
        schedule[k] = list(v)

魅力のように機能するレンダリング用のテンプレートにスケジュールを送信します。

于 2012-05-15T07:48:25.547 に答える
3

{% regroup % }または-loop{% for %}{% ifchanged %}タグを使用して、テンプレート レベルでグループ化できます。

Python コードではgroupbyを使用します。

于 2012-05-14T12:58:54.590 に答える