I apologize since I tried to reply via gmail.  Reposting & expanding
part of a solution .

> I've figured a way that I think will work best for me for the model
> and form but I'm having trouble with writing the view.  Here is my
> pseudo code
>
> models.py
> -------------------------
> class baseModel(models.Model):
>    first_name   = models.CharField( max_length=100,
> verbose_name='first')
>
> class form1Model( baseModel):
>    pass
>
> class form2Model( baseModel):
>    pass
> -------------------------

The problem with the above definitions is that form2Model and
form1Model would point to the *same* database table; that's what you
do_not_want.
[of course, no table is specified above.]  You'd need, at a minimum,
something like this:

class BaseModel(models.Model):
   class Meta:
       abstract = True

class Form1Model(BaseModel):
# Specify the table to use for Form1Model
   class Meta(BaseModel.Meta):
       db_table = 'table1'

class Form2Model(BaseModel):
# Specify the db table to use for Form2Model
   class Meta(BaseModel.Meta):
       db_table = 'table2'     #<--- table in db specified here


The following should then work for you (after db_sync):

> forms.py
> -------------------------
> class baseForm(ModelForm):
>    ....
>
> class form1( baseForm ):
>    class Meta(baseForm.Meta):
>        model = models.Form1Model
>
> class form2( baseForm ):
>    class Meta(baseForm.Meta):
>        model = models.Form2Model
> -------------------------

> I'm not sure how to create a view that can be reused.  The only
> difference is the form name and the 'thank you' page.  I thought about
> a Decorators but it doesn't seem like that is the right tool to use.
>
> view.py
> -------------------------
> def form1View(request):
>
>    if request.method == 'POST':
>        form = form1(request.POST)
>
>        if form.is_valid():
>            form.save()
>            return HttpResponseRedirect('/thanksForm1/')
# --->#  you're missing code for NOT (form.is_valid())
>    else:
>            form = form1()
>    return render_to_response('form_template.html', {'form': form} )
>

I'm guessing here that you want both forms to be processed with the
same view function?   If the forms are submitted from different pages
there are a few ways to do this.

--Pass a variable from urls.py  and rewrite the  view:
     def formView(request, which_form=None):
         if request.method == 'POST':
             if not [1, 2].__contains__(which_form):
                  pass #  <--- iNone or nvalid form specified
             else:
                 if which_form==1:
                     form = form1(request.POST)
                     redirect_url='/thanksForm2/'
                 if which_form==2:
                     form = form2(request.POST)
                     redirect_url='/thanksForm2/'
                if form.is_valid():
                   form.save()
                   return HttpResponseRedirect(redirect_url)

--Pass a variable from separate views:

     def Form1View(request):
          formView(request, which_form=1)

     def Form2View(request):
          formView(request, which_form=2)

-- 
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