この問題に取り組む方法がわかりません - 私はたくさんのことを試しましたが、フォームを送信した後に解凍するための多くの値 "エラーが発生します。Djangoフォーム - いくつかの異なるモデルのフィールドを表示しているが、外部キーでソートしたフォームを作成する
これはプレイしているモデルの簡単なデモである:私は何をしようとしている
class Supplier(models.Model):
name = models.CharField(max_length=100)
class SupplierLocation(models.Model):
supplier = models.ForeignKey(Supplier)
location = models.CharField(max_length=100)
class Product(models.Model):
supplier = models.ForeignKey(Supplier)
name = models.CharField(max_length=100)
price = models.DecimalField(decimal_places=2,max_digits=10)
は、ラジオボタンの2つのたくさん持っているフォームを生成します。 SupplierLocation.locationはラベルで、SupplierLocation.idはラジオボタンの値です。同様に、Product.nameはラベルになり、Product.idはラジオボタンの値になります。アイデアは、HTMLは次のようなものに見えるように、私はSupplier.idによってソートブロックにグループ化したいということです:両方のテーブルの
<div>
<table>
<tr class="{{ Supplier.name }} hidden">
<td>{{ location.name }}</td>
<td><input type="radio" name="location_id" value="{{ location.id }}" /></td>
</tr>
</table>
<table>
<tr class="{{ Supplier.name }} hidden">
<td>{{ product.name }}</td>
<td>{{ product.price }}</td>
<td><input type="radio" name="product_id" value="{{ product.id }}" /></td>
</tr>
</table>
</div>
が明らかに存在することになる複数の行をし、私は必要があることをかなり確信していますハードコードされた入力フィールドの代わりにウィジェットを使用することができますが、私はカスタムフォームをどのように達成するのか困惑しています。考え方は、ページが読み込まれたときにすべてのフィールドが非表示になり、ページ上のリンクからサプライヤが選択されたときにフィールドがJSで表示されることです。
フォームがどのように表示されるか、モデルフォームまたは標準フォームを使用する必要があるかどうかは不明です。
forms.py
class ProductLocationForm(forms.Form):
PRODUCT_CHOICES = [(p.id, p.name) for p in Product.objects.all()]
LOCATION_CHOICES = [(l.id, l.name) for l in SupplierLocation.objects.all()]
product = forms.ChoiceField(widget=forms.RadioSelect, choices=PRODUCT_CHOICES)
location = forms.ChoiceField(widget=forms.RadioSelect, choices=LOCATION_CHOICES)
これは私の製品と場所を提供しますが、私はそうサプライヤーによってグループ分けやサプライヤーを単離する任意の方法が欠落しています。私の現在のテストでは、私はこのようになりますフォームを持っていますJSでそれらを表示/非表示できます。
ご協力いただければ幸いです。
おかげ@ilvar - 御馳走を働きました。私はこのフォームを構築するのに膨大な時間を無駄にしていました。私はその解決策が簡単ではないと思っていました。 – xplosiv
もう1つ質問があります - このソリューションでは、入力タグをradioselectウィジェットに置き換える方法はありますか? – xplosiv
選択ウィジェットはすべてのLIを1つのリストにレンダリングするので、グループ化の問題が増えます。 – ilvar