我需要建立一个表格集,允许一周的开放时间。在
以下是我的开场时间模型:
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'),)
下面是如何为默认的周设置生成表单集
^{pr2}$下面是我如何获得当前用户的开放时间
user_hours = request.user.openinghours_set.all()
如何将用户小时数输入表单集?在
编辑
例如,假设用户已经在数据库中设置了星期一和星期四的时间,格式应该类似于:
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
扩展@Rohan的回答:
我不认为modelformset是必要的,只需像这样构造小时
显然,这是低效的,因为它每天构造一个或三个查询集,所以要这样重写它:
^{pr2}$我最后得出的结论是:
我更喜欢Python式的版本。。。在
您可以使用^{} 并提供适当的查询集。在
还有一些其他方法可以更改queryset。在
编辑:
在创建formset实例和
^{pr2}$initial
时,可以使用max_num
参数。因此,您将从现有实例中获取表单,如果实例不足,将使用来自初始dict的数据创建新表单我还没有对此进行验证,所以我怀疑它可能会为每个初始数据项添加表单。因此,在最坏的情况下,您需要创建
hours
列表,并跳过设置小时数的天数。在相关问题 更多 >
编程相关推荐