Django 1.11を使用しています。
Form
を作成し、Class based view
を使用してレコードを作成し、データベースに保存しました。
Business/models.py
class BusinessType(models.Model):
title = models.CharField(max_length=100)
created = models.DateTimeField('date created', auto_now_add=True)
modified = models.DateTimeField('last modified', auto_now=True)
class Meta:
db_table = 'business_types'
def __str__(self):
return self.title
class Business(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
name = models.CharField(max_length=200)
business_type = models.ForeignKey(BusinessType, on_delete=models.CASCADE)
created = models.DateTimeField('date created', auto_now_add=True)
modified = models.DateTimeField('last modified', auto_now=True)
class Meta:
verbose_name = 'business'
verbose_name_plural = 'businesses'
db_table = 'businesses'
def __str__(self):
return self.name
Business/Forms.py
class BusinessForm(ModelForm):
class Meta:
model = Business
fields = ['user']
Business/views.py
class BusinessCreate(LoginRequiredMixin, CreateView):
model = Business
form = BusinessForm
def form_valid(self, form):
messages.success(self.request, 'form is valid')
form.instance.user = self.request.user
form.save()
def get_success_url(self):
messages.success(self.request, 'Business Added Successfully')
return reverse('business:list')
BusinessCreate
のテンプレートをロードすると、次のようなエラーが発生します
'fields'属性なしでModelFormMixin(BusinessCreateの基本クラス)を使用することは禁止されています。
My Trials
fields
をviews class
に移動すると、正常に動作します。しかし、私はこのフォームを複数のビューで使用している可能性があるため、そうしたくないので、必要に応じて、将来複数のページで変更する必要があります。
フォームが認識されていません。これは、ビューで属性を設定するためにform
を使用したが、正しい属性はform_class
であるためです。
(form_class
を正しく設定すれば、model
も必要ありません。)