2017-10-12 3 views
0

금지되어 있습니다.사용 ModelFormMixin은 내가이 <code>Form</code>을 만든</p> <p>장고 1.11를 사용하여 기록을 작성하고 데이터베이스에 저장 <code>Class based view</code>을 사용하고

비즈니스/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') 

템플릿을로드하면 오류가 발생합니다.

'fields'속성없이 ModelFormMixin (BusinessCreate의 기본 클래스)을 사용하는 것은 금지됩니다.

내 시험

views class-fields를 이동 한 후, 그것을 잘 노력하고 있습니다. 그러나 필자는이 양식을 여러보기에서 사용할 수 있으므로 필요에 따라 나중에 여러 페이지에서 변경해야하기 때문에 그렇게하고 싶지 않습니다.

답변

3

양식이 인식되지 않습니다. 이는 form을 사용하여보기에서 속성을 설정했지만 올바른 속성이 form_class이기 때문입니다.

(제대로 form_class 설정하면 참고, 당신은뿐만 아니라 model 필요하지 않습니다.)

+0

덕분에 당신은'데프와 같은 좀 더 도움이 될 수 있습니다 나는 지난 일주 –

+0

에서이 오류와 함께 붙어 있었다, @daniel get_success_url'은 레코드를 데이터베이스에 저장 한 후 호출하지 않습니다. 'business.views.BusinessCreate 뷰가 HttpResponse 객체를 반환하지 않았다는 오류가 발생했습니다. 대신 None을 반환했습니다. ' –

+0

'get_success_url'은 당신이 오버라이드 한'form_valid'의 기본 구현에 의해 호출됩니다. 해당 메소드에서 리디렉션을 리턴해야합니다 (예 : return redirect (self.get_success_url()). 'messages.success' 호출은 실제로 그 메소드에 있어서는 안된다. –