hi
I am learning the use of Forms and tried populating a form from an
instance.Here I encountered a problem.
I have a class Lecture which can belong to diff subjects.So I created
a field 'subjects' in Lecture to be a ManyToManyField.

For example,
Lecture1 -data structures,algorithms
Lecture2 -data structures,c programming
Lecture3 -algorithms,java

I created ModelForms for Lecture and Subject .Then I created another
SubjectNamesForm( which has no associated Model )to capture the many
subject names a Lecture can have.
When I edit a Lecture, I need to show the existing values from the
Lecture in the template,so I used

<form method='POST' action="{%url edit_lecture
lectureform.instance.id  %}>
<table>
{{lectureform.as_table }}
</table>
<table>
{{subjectnamesform.as_table }}
</table>
<input type="submit" value="Submit">
</form>

I can  populate the LectureForm  with info from existing instance
using

lecture=get_object_or_404(Lecture,id)
lectureform=LectureForm(request.POST,instance=lecture)

But how do I populate the subjectnamesform ? I tried the
following ,but it shows only empty text field when subjectnamesform is
rendered

if request.method=='GET':
    ....
    subjectnamesform=SubjectNamesForm()
    subjectnamesform.subjects=[x.name for x in lecture.subjects.all()]

    return render_to_response('myapp/edit_lecture.html',
{'lectureform':lectureform,'subjectnamesform':subjectnamesform})

Can someone help?
thanks
harry

p.s:
below is the listing of models.

class Lecture(models.Model):
    speaker=models.ForeignKey(User)
    subjects=models.ManyToManyField(Subject)
    pub_date=models.DateField(default=date.today)

class Subject(models.Model):
    name=models.CharField(unique=True,max_length=50)

class LectureForm(forms.ModelForm):
        class Meta:
                model=Lecture
        exclude=('subjects',)

class SubjectForm(forms.ModelForm):
    class Meta:
        model=Subject

class SubjectNamesForm(forms.Form):
    subjects=models.CharField(max_length=400)# expects comma separated
subject names like subject1,subject2 etc

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@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