Django modal Submit form with foreign key not working

人盡茶涼 提交于 2020-01-25 08:14:05

问题


i have a model which is populated in a Bootstrap Modal, i am using class based view to render the form and submit it to the Database, however, when i click the save i get an error:

AttributeError at /create_startupaboutform/
'WSGIRequest' object has no attribute 'Startup'

i am not sure if am assigning the FK correctly, however, for the Startup model it is working fine in function view but for class based view it is not. here is my code and i appreciate feedback on it.

model.py:

class Startup ( models.Model ) :
    author = models.OneToOneField ( User , on_delete = models.CASCADE )
    startup_name = models.CharField ( 'Startup Name' , max_length = 32 , null = False , blank = False )

class Startup_About ( models.Model ) :
    str_about = models.ForeignKey ( Startup , on_delete = models.CASCADE )
    about = models.TextField ( 'About Startup' , max_length = 2000 , null = False , blank = False )
    problem = models.TextField ( 'Problem/Opportunity' , max_length = 2000 , null = False , blank = False )
    business_model = models.TextField ( 'Business Monitization Model' , max_length = 2000 , null = False ,blank = False )
    offer = models.TextField ( 'Offer to Investors' , max_length = 2000 , null = False , blank = False )

forms.py:

class startupform(forms.ModelForm):
    class Meta:
        model = Startup
        fields = ('startup_name',)
        widgets = {
            'startup_name': forms.TextInput(attrs = {'class':'form-control'}),
        }

class startupaboutform(forms.ModelForm):
    class Meta:
        model = Startup_About
        fields = ('about','problem','business_model','offer','str_about',)
        widgets = {
            'about' : forms.Textarea ( attrs = { 'class' : 'form-control' } ) ,
            'problem' : forms.Textarea ( attrs = { 'class' : 'form-control' } ) ,
            'business_model' : forms.Textarea ( attrs = { 'class' : 'form-control' } ) ,
            'offer' : forms.Textarea ( attrs = { 'class' : 'form-control' } ) ,

        }

view.py:

decorators = [str_required, login_required]

@method_decorator(login_required, name='dispatch')
@method_decorator(str_required, name='dispatch')
class create_startupaboutform(CreateView):
    template_name = 'create_about.html'
    form_class = startupaboutform
    success_url = '/str_detailedview/'

    def form_valid(self, form):
        form.instance.str_about = Startup_About.objects.filter(str_about=self.request.Startup)
        return super(create_startupaboutform, self).form_valid(form)

urls.py:

urlpatterns = [
    path ( 'appwizard/' , views.applicationwizard , name = 'appwizard' ) ,
    path ( 'create_startupform/' , views.create_startupform, name = 'create_startupform' ),
    path('create_startupaboutform/', views.create_startupaboutform, name='create_startupaboutform'),
      ]

Templates - HTML modal trigger button:

{% load static %}
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" href="{% static 'assets/bootstrap/css/bootstrap.min.css' %}">

</head>
<body>


<a href="#"  id="btn" class="btn btn-info btn-lg">Open Modal</a>


{% include "create_about.html" %}


<script src="{% static 'assets/js/jquery.min.js' %}"></script>
    <script src="{% static 'assets/bootstrap/js/bootstrap.min.js' %}"></script>

<script>
     $(document).ready(function(){
             $("#btn").on("click", function(){
                 $("#form").load("/create_startupaboutform/", function(){
                 $("#about").modal("show");
             });
             });
     });
</script>

</body>
</html>

Templates - HTML modal form:

<form id="form" method="post" action="{% url 'create_startupaboutform' %}">
    {% csrf_token %}
<div class="modal fade" id="about" role="dialog" tabindex="-1">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title">Modal Title</h4>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
                        aria-hidden="true">×</span></button>
            </div>
            <div class="modal-body">
                {{form}}
            </div>
            <div class="modal-footer">
                <button class="btn btn-light" type="button" data-dismiss="modal">Close</button>
                <button class="btn btn-primary" type="submit">Save</button>
            </div>
        </div>
    </div>
</div>
</form>

来源:https://stackoverflow.com/questions/59227721/django-modal-submit-form-with-foreign-key-not-working

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!