モデルフォームに新しいHTML属性を追加しようとするとDjangoエラーが発生する

django django-forms
モデルフォームに新しいHTML属性を追加しようとするとDjangoエラーが発生する

私はこのモデルを持っています

 40 class Item(models.Model):
 41     event = models.ForeignKey(Event)
 42     name = models.CharField('Item Name', max_length=50 )
 43     description = models.CharField('Description', max_length=150, blank=True, null=True)
 44     quantity = models.IntegerField(blank=True, null=True)
 45     start = models.DateTimeField('Availability Start Date', blank=True, null=True)
 46     end = models.DateTimeField('Expiry Date', blank=True, null=True)
 47     cost_price = models.DecimalField('Cost Price Per Item', decimal_places=2, max_digits=10, blank=True, null=True)
 48     selling_price = models.DecimalField('Selling Price Per Item', decimal_places=2, max_digits=10, blank=True, null=True)
 49
 50     def __unicode__(self):
 51         return u"%s" % self.name

そしてこのモデルは

 39 class ItemForm(forms.ModelForm):
 40     description = forms.CharField(label='Description', max_length=250, widget=forms.Textarea, required=False)
 41     image = forms.ImageField(label='Item Picture', max_length=50, required=False)
 42     start = forms.DateField(widget=SelectDateWidget, required=False)
 43     end = forms.DateField(widget=SelectDateWidget, required=False)
 55
 56     class Meta:
 57         model = Item
 58         fields = ('image',
 59                   'name',
 60                   'description',
 61                   'quantity',
 62                   'start',
 63                   'end',
 64                   'cost_price',
 65                   'selling_price',
 66                   )
 67         widgets = {'cost_price': forms.TextInput(attrs={'onChange':'updateSellingPrice()'})}

次のjs関数を呼び出す「cost_price」フィールドに新しい属性を追加しようとしています:

  8
  9     function updateSellingPrice() {
 10         $('#id_cost_price').change(function () {
 11             // get cost price
 12             var costPrice = $('id_cost_price').text();
 13             // set selling price
 14             $('$id_selling_price').val(costPrice);
 16         })
 17     }
 18

モデルフォームに行67 `widgets = {‘cost_price’:forms.TextInput(attrs = {‘onChange’: ‘updateSellingPrice()’})}`を含めると、このエラーが発生します。

Exception Value: Caught ViewDoesNotExist while rendering: Could not import registration.views.item_details. View does not exist in module registration.views.

モデルフォームから行67を削除すると、すべてが正常に機能/ロードされます。 Djangoのエラーメッセージは、実際のエラーとは無関係だと思います。 トピック外:forms.pyファイルのエラーはエラーメッセージを生成する傾向があり、間違った道をたどることがあります。

  0  0


ベストアンサー

モデルからフォームを作成してカスタマイズする必要があるかもしれません。https://docs.djangoproject.com/en/dev/topics/forms/modelforms/ [こちら]は公式ドキュメントです。

widgetsを使用して、HTML属性でカスタマイズします

0


バカ。 私は「from django import forms」ではなく「from django.forms import forms」を実行していました。

0


タイトルとURLをコピーしました