根据前一个字段拆分 Django ModelForm 选择

问题描述 投票:0回答:1

所以我正在制作预订表格,我有我的预订模型:

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 django-models django-forms
1个回答
0
投票

我能够使用一个名为 django-smart-select

的漂亮 Django 包来解决这个问题
© www.soinside.com 2019 - 2024. All rights reserved.