所以我正在制作预订表格,我有我的预订模型:
class Bookings(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE, null=True, verbose_name="کاربر",)
booker_name = models.CharField(max_length=100, null=True, verbose_name="نام",)
booked_time = models.ForeignKey(AvailableHours, on_delete=models.CASCADE,related_name='booked_time', verbose_name="سانس",)
booking_code = models.IntegerField(unique=True,default=random_string, verbose_name="کدپیگیری",)
confirmed = models.CharField(max_length=100,choices=BOOKING_STATUS,default='در انتظار',null=True, verbose_name="وضعیت",)
class Meta:
verbose_name_plural = "رزرو ها"
verbose_name = "رزرو"
def __str__(self):
return f'{str(self.booker_name)} - {self.booked_time} ** {self.confirmed}'
我的预定时间基于:
class AvailableHours(models.Model):
free_date = models.ForeignKey(AvailableDates,verbose_name="تاریخ فعال", null=True, blank=True,on_delete=models.CASCADE,related_name='freedate')
free_hours_from = models.IntegerField(null=True, blank=True, verbose_name="از ساعت",)
free_hours_to = models.IntegerField(null=True, blank=True, verbose_name="الی ساعت",)
status = models.BooleanField(null=True,default=True, verbose_name="آزاد است؟",)
class Meta:
verbose_name_plural = "سانس ها"
verbose_name = "سانس"
def __str__(self):
return f'{str(self.free_date)} - {self.free_hours_from} الی {self.free_hours_to}'
class AvailableDates(models.Model):
free_date = jmodels.jDateField(null=True, verbose_name="تاریخ فعال",)
status = models.BooleanField(choices=AVAILABLE_DATE_CHOICES,null=True,default=True, verbose_name="وضعیت",)
class Meta:
verbose_name_plural = "روزهای فعال"
verbose_name = "روز فعال"
def __str__(self):
return f'{str(self.free_date)}'
我无法练习如何在 ModelForm 中拆分日期和时间字段。
class BookingForm2(forms.ModelForm):
class Meta:
model = Bookings
exclude = ('user','booking_code','confirmed',)
def __init__(self,*args, **kwargs):
super(BookingForm, self).__init__(*args, **kwargs)
self.fields['booked_time'].queryset = AvailableHours.objects.filter(status=True)
因此,在前端用户从下拉菜单中选择可用日期,然后选择在该模型中创建的可用时间。 任何人都可以建议解决方法吗?
我能够使用一个名为 django-smart-select
的漂亮 Django 包来解决这个问题