I am trying to make an inlineforms through django. I have made a model to 
save the uploaded Image. Unfortunately the image is not getting uploaded 
through the form. I am not able to track why the image is not getting saved 
in the folder.

models.py  - This file contains all the models.
```
class courses(models.Model):
    name  = models.CharField(max_length = 50)


class topics(models.Model):
    name  = models.CharField(max_length = 50)
    sno   = models.PositiveIntegerField(default = 0)
    course = models.ForeignKey(courses,on_delete = models.CASCADE,null = 
True)

class sub_topics(models.Model):
    name  = models.CharField(max_length = 50)
    content = models.TextField(null = True)
    sno   = models.PositiveIntegerField(default = 0)
    image = models.ImageField(upload_to=('images/'),blank=  True,null = 
True)
    topic = models.ForeignKey(topics,on_delete = models.CASCADE,null = True)

```

forms.py - In this file through the inlineformset_factory I have made 
courses->topics->sub_topics data base structure. The sno is use to store 
the serial number of the child forms 
```
TopicFormset = inlineformset_factory(courses, topics, 
fields=('name','sno'),extra =1,widgets = {'sno': HiddenInput()})
Sub_TopicFormset = inlineformset_factory(topics, sub_topics, 
fields=('name','content','sno','image'),extra = 1,widgets = {'sno': 
HiddenInput()})

```

views.py -  In this file I have used CreateView to display the forms 
created. While saving the results the Course and Topics are saved but while 
saving the subtopic only the character input is getting saved. The image is 
not getting saved Even after uploading the image. The image is also not 
getting saved in the media/images folder.
```
class Create_Course_View(CreateView):
    model = courses
    form_class = CourseForm
    template_name = 'create/add.html'
    success_url = 'create/add.html'

    def form_valid(self, form):
        result = super(Create_Course_View, self).form_valid(form)

        topic_formset = TopicFormset(form.data, instance=self.object, 
prefix='topic_formset')

        if topic_formset.is_valid():
            topics = topic_formset.save()

        topics_count = 0

        for topic in topics:
            sub_topic_formset = Sub_TopicFormset(form.data, instance = 
topic, prefix='sub_topic_formset_%s'% topics_count)
            x = sub_topic_formset.cleaned_data
            print(x[0])
            if sub_topic_formset.is_valid():
                sub_topic_formset.save()
            topics_count += 1

        return result

    def get_context_data(self, **kwargs):
        context = super(Create_Course_View, self).get_context_data(**kwargs)
        context['topic_formset'] = TopicFormset(prefix='topic_formset')
        context['sub_topic_formset'] = 
Sub_TopicFormset(prefix='sub_topic_formset_0')
        return context


class upload_image(CreateView):
    model = image
    form_class = Upload
    template_name = 'create/upload.html'

    def form_valid(self, form):
        result = super(upload_image, self).form_valid(form)
        return result

    def get_context_data(self, **kwargs):
        context = super(upload_image, self).get_context_data(**kwargs)
        return context

```

add.html
```
<h1>Add Course</h1>
<form action="" method="post" enctype="multipart/form-data" >
    {% csrf_token %}
    {{ form.as_p }}


    <div id="topics">
        {{ topic_formset.management_form }}
        {% for form in topic_formset %}
            <fieldset class="topic_form">
                <legend>Topic</legend>
                {{ form.as_p }}

                <div class="topic_sub_topics">
                    {{ sub_topic_formset.management_form }}
                    {% for form in sub_topic_formset %}
                        <fieldset class="topic_sub_topic_form">
                            <legend>Sub Topic</legend>
                            {{ form.as_p }}
                        </fieldset>
                    {% endfor %}
                </div>
                 <p><input type="button" value="Add Sub Topic" 
class="btn_add_sub_topic" id="topic-{{ forloop.counter0 }}"/></p>
            </fieldset>
        {% endfor %}
    </div>
    <p><input type="button" id="btn_add_topic" value="Add Topic"/></p>
    <p><input type="submit" value="Save"></p>
</form>
```

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/97ad518e-2da3-47cd-9ce3-0983ab62a9ea%40googlegroups.com.

Reply via email to