无法在窗体s上分配必须是实例

2024-04-24 13:18:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个网站,用户可以发布他们的内容,每个内容重定向到一个私人用户之间的聊天取决于内容id

我这样做是为了在私人聊天中检索内容信息。在

问题是,当用户提交表单以发布comment时,我会收到以下错误:

Cannot assign "< User: my_user >": "userComment.seller" must be a "Profile" instance.

在我看来,我将连接的用户保存为buyer,而将接收评论的用户保存为seller。在

我怎样才能修正这个错误?我在下面的代码上做错了什么?在

这是模型.py

class Profile(models.Model):
    name = models.CharField(max_length=120)
    user = models.OneToOneField(User, null=True, blank=True)

class Gig(models.Model):
    profile = models.ForeignKey(Profile, null=True)
    title = models.CharField(max_length=100, unique=True)

class userComment(models.Model):
    buyer = models.ForeignKey(User, related_name="buyer", null=True)
    seller = models.ForeignKey(Profile, related_name="seller", null=True)
    comment = models.TextField(max_length=255, null=True)

视图.py

^{pr2}$

表单.py

class userCommentForm(forms.Form):
    seller = CommaSeparatedUserField(label=_(u"seller"))
    comment = forms.CharField(label=_(u"comment"), widget=forms.Textarea())

    def save(self, buyer):
        sellers = self.cleaned_data['seller']
        comment = self.cleaned_data['comment']
        message_list = []
        for seller in sellers:
            msg = userComment(buyer=buyer, seller=seller, comment=comment,)

            if seller == buyer:
                print('-----------------------------------------------')
                print('same')

            if None is not None:
                msg.parent_msg = None
                None.save()
            msg.save()
            message_list.append(msg)

        return message_list

回溯:

File "C:\Python34\projects\tryTen\private_comment\views.py" in addComment
  31.             form.save(buyer=request.user)

File "C:\Python34\projects\tryTen\private_comment\forms.py" in save
  15.             msg = userComment(buyer=buyer, seller=seller, comment=comment,)

Tags: 用户pytrue内容modelssavecommentmsg
2条回答

您的userComment模型将feild seller作为另一个名为Profile的模型的外键。{{cd3>类型的

要么修改 seller = models.ForeignKey(Profile, related_name="seller", null=True)到{} 或 检索并传递一个Profile实例。在

p = Profile.objects.get(user=seller)
msg = userComment(buyer=buyer, seller=p, comment=comment)

您的CommaSeparatedUserField用户字段似乎是您尚未与我们共享的自定义字段。不过,很容易看出,清理后的数据实际上是卖家名称列表,而不是Seller实例。另一方面,如果它包含id,则可以执行以下操作:

msg = userComment(buyer=buyer, seller_id=seller, comment=comment,)

如果只是名字

^{pr2}$

相关问题 更多 >