Hello I reading this tutorial 
https://pype.its.utexas.edu/docs/tutorial/unit6.html#answers
it's work OK But When I want improve it and add ImageField in Category
Model i have problem with ImageField It's Not uploaded

file = models.ImageField(upload_to='img/%Y')


see code please :
_____
views.py
_____
from django import forms
class CategoryForm(forms.ModelForm):
    class Meta:
        model = Category

def add_category(request):
    if request.method == "POST":
        form = CategoryForm(request.POST, request.FILES)
        ## Handle AJAX  ##
        if request.is_ajax():
            if form.is_valid():
                form.save()
                # Get a list of Categories to return
                cats = Category.objects.all().order_by('name')
                # Create a dictionary for our response data
                data = {
                    'error': False,
                    'message': 'Category %s Added Successfully' %
form.cleaned_data['name'],
                    # Pass a list of the 'name' attribute from each
Category.
                    # Django model instances are not serializable
                    'categories': [c.name for c in cats],
                }
            else:
                # Form was not valid, get the errors from the form and
                # create a dictionary for our error response.
                data = {
                    'error': True,
                    'message': "Please try again! one",
                    'name_error': str(form.errors.get('name', '')),
                    'slug_error': str(form.errors.get('slug', '')),
                    'file_error': str(form.errors.get('file', '')),
                }
            # encode the data as a json object and return it
            return http.HttpResponse(json.dumps(data))

        ## Old Form Handler Logic ##
        if form.is_valid():
            form.save()
            return http.HttpResponseRedirect('/category/')
    else:
        form = CategoryForm()
    cats = Category.objects.all().order_by('name')
    context = Context({'title': 'Add Category', 'form': form,
'categories': cats})
    return render_to_response('ajax_form.html',
context,context_instance=RequestContext(request))

___________
ajax_form.html
___________

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml";>
<head>
   <title>{{ title }}</title>
   <style>
      #message {width:250px; background-color:#aaa;}
      .hide {display: none;}
   </style>
   <script type="text/javascript" src="http://ajax.googleapis.com/ajax/
libs/jquery/1.3.2/jquery.js"></script>
</head>
<body>

    <script type="text/javascript">
    // prepare the form when the DOM is ready
    $(document).ready(function() {
        $("#add_cat").ajaxStart(function() {
            // Remove any errors/messages and fade the form.
            $(".form_row").removeClass('errors');
            $(".form_row_errors").html('');
            $("#add_cat").fadeTo('slow', 0.33);
            $("#add_cat_btn").attr('disabled', 'disabled');
            $("#message").addClass('hide');
        });

        // Submit the form with ajax.
        $("#add_cat").submit(function(){
            $.post(
                // Grab the action url from the form.
                "#add_cat.getAttribute('action')",

                // Serialize the form data to send.
                $("#add_cat").serialize(),

                // Callback function to handle the response from view.
                function(resp, testStatus) {
                    if (resp.error) {
                        // check for field errors
                        if (resp.name_error != '') {
                            $("#name_row").addClass('errors');
                            $("#name_errors").html(resp.name_error);
                        }
                        if (resp.slug_error != '') {
                            $("#slug_row").addClass('errors');
                            $("#slug_errors").html(resp.slug_error);
                        }
                        if (resp.file_error != '') {
                            $("#file_row").addClass('errors');
                            $("#file_errors").html(resp.file_error);
                        }
                    } else {
                        // No errors. Rewrite the category list.
                        $("#categories").fadeTo('fast', 0);
                        var text = new String();
                        for(i=0; i<resp.categories.length ;i++){
                            var m = resp.categories[i]
                            text += "<li>" + m + "</li>"
                        }
                        $("#categories").html(text);
                        $("#categories").fadeTo('slow', 1);
                        $("#id_name").attr('value', '');
                        $("#id_slug").attr('value', '');
                        $("#id_file").attr('value', '');
                    }
                    // Always show the message and re-enable the form.
                    $("#message").html(resp.message);
                    $("#message").removeClass('hide');
                    $("#add_cat").fadeTo('slow', 1);
                    $("#add_cat_btn").attr('disabled', '');

            // Set the Return data type to "json".
            }, "json");
            return false;
        });

    });
    </script>

   <h1>{{ title }}</h1>
   <div id='message'></div>
   <form id="add_cat" method="post" action="."  enctype="multipart/
form-data">
   {% csrf_token %}

       <div class='form_row' id='name_row'>
           <p id='name_errors' class="form_row_errors">{% if
form.name.errors %}{{ form.name.errors }}{% endif %}</p>
           {{ form.name.label_tag }}{{ form.name }}
       </div>
       <div class='form_row' id='slug_row'>
           <p id='slug_errors' class="form_row_errors">{% if
form.slug.errors %}{{ form.slug.errors }}{% endif %}</p>
           {{ form.slug.label_tag }}{{ form.slug }}
       </div>

       <div class='form_row' id='file_row'>
           <p id='file_errors' class="form_row_errors">{% if
form.file.errors %}{{ form.file.errors }}{% endif %}</p>
           {{ form.file.label_tag }}{{ form.file }}
       </div>

       <input id="add_cat_btn" type='submit' value="save">
   </form>
<hr>
   <h2>Categories</h2>
   <ul id="categories">
      {% for cat in categories %}
      <li>{{ cat.name }}</li>
      {% endfor %}
   </ul>
</body>
</html>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to