Django Forms,Foreign Key和Initial返回所有相关值

时间:2010-03-15 12:52:56

标签: django-forms

我正在使用Django表单。我的问题是外键字段和那些使用初始字段的所有关联条目(与该记录相关的所有记录除了我想要的一个条目,例如,而不是获得主键,我得到主键,发布主题,帖子正文和该记录所归属的所有其他值)。表单和其他相关查询仍然可以正常工作,但此行为会阻塞我的数据库。如何获取我想要的特定字段而不是所有记录。我的模型的一个例子是:

childParentId的表单字段仅返回postIDpostSubjectpostBody而不是postID

同样form = ForumCommentForm(initial = {'postSubject':forum.objects.get(postID = postID), })会返回与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

1 个答案:

答案 0 :(得分:0)

我使用以下方法解决了这个问题。

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