tags:

views:

195

answers:

1

I a working with Django forms. The issue I have is that Foreign Key fields and those using initial take all associated entries (all records associated with that record other then the one entry i wanted e.g instead of getting a primary key, i get the primary key, post subject, post body and all other values attributed with that record). The form and the other associated queries still work well, but this behaviour is clogging my database. How do i get the specific field i want instead of all records. An example of my models is here:

A form field for childParentId returns postID, postSubject and postBody instead of postID alone.

Also form = ForumCommentForm(initial = {'postSubject':forum.objects.get(postID = postID), }) returns all records related to postID.

class forum(models.Model):
postID = models.AutoField(primary_key=True)
postSubject = models.CharField(max_length=25)
postBody = models.TextField()
postPoster = models.ForeignKey(UserProfile)
postDate =  models.DateTimeField(auto_now_add=True)
child = models.BooleanField()
childParentId = models.ForeignKey('self',blank=True, null=True)
deleted = models.BooleanField()

def __unicode__(self):
    return u'%s %s %s %s %s' % (self.postSubject, self.postBody, self.postPoster, self.postDate, self.postID
A: 

I sort of figured this out using the following.

in forms.py

class ForumCommentForm(forms.ModelForm):
    postBody = forms.CharField(widget=forms.Textarea(attrs={'cols':'70', 'rows':'5'}))
    childParentId = forms.CharField(widget=forms.TextInput)
    class Meta:
        model = forum

in views.py

@login_required def forum_view(request,postID):

post = list(forum.objects.filter(postID = postID)|forum.objects.filter(childParentId__in = postID))

if request.method == 'POST':

    form = ForumCommentForm(request.POST)
    if form.is_valid():
        form.save()
        #this reloads the query to include updated values
        post = list(forum.objects.filter(postID = postID)|forum.objects.filter(childParentId__in = postID))
        #this returns an empty form 
        form = ForumCommentForm()

else:
    parent = forum.objects.get( postID = postID)
    form = ForumCommentForm(initial = {'postSubject':parent.postSubject, 'child':'1', 'childParentId':parent.postID})