我在这里因为我不知道如何在我的Django应用程序中为特定案例创建表单。
我会尽力解释。
我的网站是关于皮划艇俱乐部的租赁。我们有人在一段时间内租船。我希望能够在租用之前检查船只的存量。
俱乐部可以有许多不同的船型,而俱乐部可能有某种类型的船只,而另一种则没有。 当我创建租赁时,我希望能够为每种BoatType选择一些船。
我们举一个例子:
我有一个俱乐部A有三个BoatType它租:C1,C2,C3。在表单中,我需要有这三个字段:
C1:数字输入/ C2:数字输入/ C3:数字输入
我有一个俱乐部B,租金有两种船型:K1,K2。在表单中,我需要有这两个字段:
K1:数字输入/ K2:数字输入
所以我有这些模特:
class Club(models.Model):
name =models.CharField(max_length=100)
class BoatType(models.Model):
club = models.ForeignKey(Club, on_delete=models.CASCADE)
label = models.CharField(max_length=100)
class RentalBoats(models.Model):
rental = models.ForeignKey(Rental, on_delete=models.CASCADE)
boatType = models.ForeignKey(BoatType, on_delete=models.CASCADE)
quantity = models.PositiveIntegerField()
class Rental(models.Model):
club = models.ForeignKey(Club, on_delete=models.CASCADE)
boats = models.ManyToMany(BoatType, through=RentalBoats)
我在RentalForm类的__init_()函数中尝试过类似的东西:
class RentalForm(forms.ModelForm):
class Meta:
model = Rental
fields = '__all__'
def __init__(self, club, *args, **kwargs):
super(RentalForm, self).__init__(*args, **kwargs)
for boatType in BoatType.objects.filter(club=club):
self.fields['{}'.format(boatType.label)] = forms.IntegerField()
...但我并不感到这是一种非常好的方式。
这里有人知道怎么做吗? 我希望你能理解我想做的事。
感谢您的帮助。
祝你有个美好的一天: - )
路易松