0
我使用Django 1.11沒有「領域」屬性使用ModelFormMixin禁止
我創建了一個Form
並使用Class based view
創建一個記錄並保存到數據庫中。
商務/ 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
商務/ Forms.py
class BusinessForm(ModelForm):
class Meta:
model = Business
fields = ['user']
商務/ 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
時出現如下錯誤:
禁止使用ModelFormMixin(BusinessCreate的基類),但不包含'fields'屬性。
我的考驗
移動fields
到views class
後,工作正常。但我不想這樣做,因爲我可能在多個視圖上使用此表單,因此如果需要將來需要在多個頁面上進行更改。
感謝@daniel,我堅持了這個錯誤從去年 –
1周你能幫助更多的爲'高清在將記錄保存到數據庫後,get_success_url'不會調用。並且它發出錯誤,因爲視圖business.views.BusinessCreate沒有返回HttpResponse對象。它返回None。 –
'get_success_url'被默認的'form_valid'的實現所調用,它已被覆蓋。您需要從該方法返回重定向,例如'return redirect(self.get_success_url())'。請注意,'messages.success'調用不應該在該方法中。 –