Haikson

Cannot set values on a ManyToManyField which specifies an in

Dec 10th, 2012
374
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.13 KB | None | 0 0
  1. #models.py
  2. class Page(MPTTModel):
  3.     title = models.CharField(max_length=255, verbose_name=_('Title'), help_text=_('Page\'s title.'))
  4. class Style(models.Model):
  5.     title = models.CharField(max_length=255, verbose_name=_('Title'))
  6.     pages = models.ManyToManyField(Page, through='StyleRelationship')
  7. class StyleRelationship(models.Model):
  8.     page = models.ForeignKey(Page, verbose_name=_('Page'))
  9.     style = models.ForeignKey(Style, verbose_name=_('Style'))
  10.     ordering = models.IntegerField(default=0, verbose_name=_('Ordering'))
  11. #forms.py
  12. class StyleForm(forms.ModelForm):
  13.     class Meta:
  14.         model = Style
  15.  
  16. #views.py
  17. def new_style(request, project_id):
  18.     try:
  19.         project = Project.objects.get(pk = project_id)
  20.     except Project.DoesNotExist:
  21.         raise Http404
  22.  
  23.     if request.method == 'POST':
  24.         style_form = StyleForm(request.POST)
  25.         if style_form.is_valid():
  26.             style = style_form.save()
  27.             return redirect('style', project_id, style.pk)
  28.     else:
  29.         style_form  = StyleForm()
  30.  
  31.     context = {
  32.         'project': project,
  33.         'projects_for_navigation': Project.objects.all(),
  34.         'styles_for_navigation': Style.objects.all().filter(project = project),
  35.         'style_form': style_form,
  36.     }
  37.     template = 'admin/styles/new_style.html'
  38.     return render_to_response(template, context, context_instance=RequestContext(request))
  39.  
  40. #new_style.html
  41.     <form action="" method="POST">
  42.         <fieldset>
  43.             <legend>{% trans 'New Style' %}</legend>
  44.             {% csrf_token %}
  45.             {% for field in style_form %}
  46.                 <p>{{ field.errors }}</p>
  47.             {% endfor %}
  48.  
  49.             <input type="hidden" name="project" value="{{ project.pk }}">
  50.             <p><label for="id_title">{{ style_form.title.label }}:</label> {{ style_form.title }}</p>
  51.             <p><label for="id_code">{{ style_form.code.label }}:</label> {{ style_form.code }}</p>
  52.             <p><label for="id_pages">{{ style_form.pages.label }}:</label> {{ style_form.pages }}</p>
  53.         </fieldset>
  54.         <input type="submit" value="{% trans 'Save' %}">
  55.     </form>
Advertisement
Add Comment
Please, Sign In to add comment