ではありませんでした結合していないすべてのオブジェクト...Djangoは現実的な例のために、私は私の問題は非常に明白で、自明な解を持っている感じが、私は数時間のためにそれを見つけることができないクエリセット
をmodelmultiplechoicefieldのは、私が持っている想像してみましょう次のモデル:
class Report(models.Model):
title = models.CharField(max_length=60)
author = models.ForeignKey(User)
posts = models.ManyToManyField(Post)
class Post(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(User)
報告と投稿があります。投稿はいくつかのレポートに関連付けることができます。 そして、レポートへの投稿のバウンダリ/アンバウンディングのためのフォームがあります。
class AddPostsToReport(ModelForm):
def __init__(self, user, *args, **kwargs):
super(AddPostsToReport, self).__init__(*args, **kwargs)
self.fields['posts'] = forms.ModelMultipleChoiceField(
queryset=Post.objects.filter(author=user),
required=False,
widget=forms.CheckboxSelectMultiple)
class Meta:
model = Report
fields = ('posts',)
私はフォームに追加のパラメータ(ユーザー)を渡します。このフォームでユーザーがページを開くと、自分の投稿のみをバインド/アンバインドできます。
1つのこと以外はすべて正常に動作します。ユーザーがフォームを保存すると、そのレポートにバインドされる前の他のすべての投稿はアンバウンドになります。それは私が必要とするものではありません。そのユーザーは自分の投稿のみをレポートにバインド/アンバインドできる必要がありますが、他のユーザーの投稿は状態をリセットしません。
ありがとうございました。
編集:ここで図である(それが本当のビューではないのですが、実際のビューのロジックがまったく同じである)
@login_required
def report_add_posts(request, report_id):
report = get_object_or_404(Report, pk = report_id)
if request.method == 'POST':
form = AddPostsToReport(request.user, request.POST, instance = report)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse(...))
else:
form = AddPostsToReport(request.user, instance = report)
return render_to_response('report/page_with_form_to_add_posts.html',
{ 'form': form,
'report': report },
context_instance=RequestContext(request))
完全な例のビューコードを投稿できますか? – Udi
ええ、私はビューコードを追加 – kasitan