0

ユーザーが UserModel を使用して互いにメッセージを送信できるようにする単純な受信トレイ アプリケーションを作成しようとしています。

フォームセットの非表示フィールドにクエリセット内のすべてのオブジェクトの ID を入力するにはどうすればよいですか? なぜなら、私がしようとすると

File "C:\mysite\pet\views.py" in message
 913.     initial.update({'hidden_field': messages.id})

例外タイプ: AttributeError at /message/ 例外値: 「関数」オブジェクトに属性「id」がありません

class Message(models.Model):
    user = models.ForeignKey(User, related_name='sender')
    recipient = models.ForeignKey(User, related_name='recipient')
    created = models.DateTimeField(auto_now_add=True)
    body = models.CharField(max_length=1000)
    read = models.BooleanField(default=False)
    trash = models.BooleanField(default=False)
    sentmessage = models.BooleanField(default=False)
    thread = models.ForeignKey(Thread,blank=True,null=True)
    draft = models.BooleanField(default=False)


    def __unicode__(self):
        return self.body

ビュー

@login_required
def message(request):    
    person = Person.objects.get(user=request.user)
    messages = Message.objects.filter(recipient=request.user.id).order_by("-created").values    
    initial = {}
    initial.update({'hidden_field': messages.id})

    form = formset_factory(CheckBoxForm)
    formset = form(initial=initial)
    return render(request,'messages.html',{'messages':messages,'form':form,'person':person})

フォーム

class CheckBoxForm(forms.Form):
    checkbox = forms.BooleanField(required=False)
    hidden_field = forms.CharField(widget=forms.HiddenInput())       

テンプレート

     {% for m in messages %}
    {{m.body}}
   {% endfor %}

@ 新しいコード

 @login_required
 def message(request):    
     messages = Message.objects.filter(recipient=request.user).order_by("-created")  

     form = CheckBoxForm()
     if request.method =='POST':
         form = ReplyForm(request.POST)
         if form.is_valid():
             id = request.POST.get('hidden_field', False)
             Message.objects.filter(pk=id).delete()
     return render(request,'messages.html',     {'messages':messages,'form':form,'person':person})
4

1 に答える 1