Django Forms, Foreign Key и Initial возвращают все связанные значения - PullRequest
1 голос
/ 15 марта 2010

Я работаю с формами Django. Проблема, с которой я столкнулся, заключается в том, что поля внешнего ключа и те, которые используют начальные, берут все связанные записи (все записи, связанные с этой записью, кроме той, которую я хотел, например, вместо получения первичного ключа, я получаю первичный ключ, тему сообщения, тело сообщения и все другие значения, связанные с этой записью). Форма и другие связанные запросы по-прежнему работают хорошо, но это приводит к засорению моей базы данных. Как получить нужное поле вместо всех записей? Пример моих моделей здесь:

Поле формы для childParentId возвращает postID, postSubject и postBody вместо 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 голосов
/ 16 марта 2010

Я понял это, используя следующее.

в 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 (запрос, 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})
...