1
ための__init__メソッドでDjangoのフォームの値にアクセスします:は、どのように私は、外部キーを含むモデルを持っているクエリ
class Part(models.Model):
partType = models.ForeignKey(PartType, on_delete=models.CASCADE)
brand = models.ForeignKey(Brand, on_delete=models.CASCADE)
part_name = models.CharField(max_length=60)
class QuotePart(models.Model):
quote = models.ForeignKey(Quote, on_delete=models.CASCADE)
line = models.PositiveSmallIntegerField(default=1)
partType = models.ForeignKey(PartType, on_delete=models.CASCADE)
# part can be None if the part has not been selected
part = models.ForeignKey(Part, on_delete=models.CASCADE,blank=True,null=True)
私は部品が引用に追加することができるようにするためのフォームを持っているとします右PartTypeにあるが、私のコードが動作していないだけで部品にフォーム上の選択肢を制限したい:
class QuoteBikePartForm(ModelForm):
def __init__(self, *args, **kwargs):
super(QuoteBikePartForm, self).__init__(*args, **kwargs)
self.fields['partType'].widget.attrs['disabled'] = True
self.fields['frame_part'].widget.attrs['disabled'] = True
partType = kwargs.pop('partType')
self.fields['part'].queryset = Part.objects.filter(partType=partType.pk)
class Meta:
model = QuotePart
fields = ['quote','line','partType','frame_part', 'part', 'quantity','cost_price', 'sell_price']
QuoteBikePartFormSet = inlineformset_factory(Quote, QuotePart, form=QuoteBikePartForm)
私は別のものと、これまで運の数を試してみました。
は「動作していません」と定義します。それは何かエラーを投げているのですか?フィールドが正しく表示されていませんか? –
私は親クラス '__init__'を呼び出すときに' partType'キーワードを期待していないと思います。もしそうなら、この行 'partType = kwargs.pop( 'partType')'を '__init__'メソッドの先頭に移動させるべきです – mateuszb
私は先にポップを移動しましたが、エラーは発生しませんでしたが、パーツのリストはその行のpartType値によって制限されるリスト(これは私が必要とするものです。 –