如何编辑表单以显示第二个模型中的字段?如何遍历多个领域?

时间:2015-05-18 19:24:26

标签: python django forms

我创造了商店。我有两个模型:

class Product(models.Model):
    name = models.CharField(verbose_name="name", max_length=40)
    cost = models.FloatField(verbose_name="price")

    def __unicode__(self):
        return self.name

class Shop(models.Model):
    product = models.ManyToManyField(Product)
    name = models.CharField(verbose_name="Nazwa", max_length=40)
    budget = models.FloatField(verbose_name="kwota")

    def __unicode__(self):
        return self.name

我创建了forms.py文件:

class ShopForm(forms.ModelForm): 
        product = forms.ModelMultipleChoiceField(queryset = Product.objects.all(), widget=forms.CheckboxSelectMultiple(),required=True) 
        name = forms.CharField(max_length=15, label='Name')
        budget = forms.FloatField()

        class Meta: 
                model = Shop
                fields = ('product','name', 'budget')

现在我有类似的东西:

http://i.stack.imgur.com/boLIq.png

我必须更改以增加此产品旁边的产品成本?我不知道,但我认为这很简单......

第二个问题:

当我想要商店的展示细节时,我不知道如何遍历产品。 例如,当我想要这个商店的名称我添加

{{ shop.name }}

当我做的时候

{{ shop.product }}

我收到错误

StopIteration at /shop/1/

No exception message supplied

我知道这是问题,因为它是ManyToManyField但是如何创建解决方案?

1 个答案:

答案 0 :(得分:0)

对于第一个问题,你可能会尝试使用标准的html表单元素创建没有django表单的表单,可能有一个解决方案,但我不知道如何处理django表单。

第二个问题, 你应该用这个:

{% for p in shop.product.all %} {{p.name}} {% endfor %}