環境
1 週間の営業時間を設定できるように、フォームセットを作成する必要があります。
状態
開店時間のモデルは次のとおりです。
WEEKDAYS = [
(1, _("Monday")),
(2, _("Tuesday")),
(3, _("Wednesday")),
(4, _("Thursday")),
(5, _("Friday")),
(6, _("Saturday")),
(7, _("Sunday")),
]
class OpeningHours(models.Model):
user = models.ForeignKey(User)
weekday = models.IntegerField(choices=WEEKDAYS)
from_hour = models.TimeField()
to_hour = models.TimeField()
class Meta:
unique_together = (('user', 'weekday'),)
デフォルトの週設定のフォームセットを生成する方法は次のとおりです
UserOpeningHoursFormSet = formset_factory(UserOpeningHoursForm, extra=0)
hours = [{
'weekday': day,
'from_hour': '08:00',
'to_hour': '18:00',
} for day in range(1, 8)]
formset = UserOpeningHoursFormSet(initial=hours)
現在のユーザーの営業時間を取得する方法は次のとおりです
user_hours = request.user.openinghours_set.all()
質問
user_hours を formset に入れるにはどうすればよいですか?
編集
例として、ユーザーがすでに月曜日と木曜日の時間をデータベースに設定しているとします。フォームは次のようになります。
weekday: Monday
from_hour: '09:00' # user_set
to_hour: '19:00' # user_set
weekday: Tuesday
from_hour: # default initial value
to_hour: # default initial value
weekday: Wednesday
from_hour: # default initial value
to_hour: # default initial value
weekday: Thursday
from_hour: '13:00' # user_set
to_hour: '15:00' # user_set
weekday: Friday
from_hour: # default initial value
to_hour: # default initial value
weekday: Saturday
from_hour: # default initial value
to_hour: # default initial value