使用直通模型Django

时间:2018-02-28 18:15:57

标签: django forms field models manytomanyfield

我在这里因为我不知道如何在我的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()

...但我并不感到这是一种非常好的方式。

这里有人知道怎么做吗? 我希望你能理解我想做的事。

感谢您的帮助。

祝你有个美好的一天: - )

路易松

0 个答案:

没有答案