【发布时间】:2015-01-05 04:52:51
【问题描述】:
为什么我会收到此错误?
我不知道如何摆脱这个错误。 如何清理表单字段以验证用户名?
提前致谢。
class InboxCompany(generic.UpdateView):
model = CandidateToJob
template_name = 'dashboard/inbox-company.html'
form_class = ComposeMessage
def get(self, *args, **kwargs):
recipient = self.get_object(queryset=CandidateToJob.objects.select_related('candidate'))
if recipient is not None:
user = User.objects.get(username=recipient.candidate.user.username)
self.initial = {'recipient': user}
return super(InboxCompany, self).get(*args, **kwargs)
forms.py
class ComposeMessage(ModelForm):
recipient = forms.CharField(
required=True,
widget=forms.TextInput(attrs={'class': 'form-control'})
)
body = forms.CharField(
required=True,
widget=forms.TextInput(attrs={'class': 'form-control'})
)
class Meta:
model = Message
【问题讨论】:
-
消息清楚地说明了问题。您正在尝试将
User分配给Charfield,这是没有意义的。请记住,您的receipient字段是一个外键(我假设),因此它在您的Message表中由一个整数值表示。因此,表示该外键关系的表单字段也应该返回一个整数。您是否希望用户能够在表单字段中输入用户名并让它查找该用户并将其保存为recipient? -
感谢蒂米的快速反应。我不希望用户在收件人字段中输入用户名。即使我更改 id 的用户名,它也会返回相同的错误。
-
你想用这个表格做什么?您是否尝试使用用户预填充
receipient字段,然后验证该用户并在发布表单时将其保存到receipient字段? -
没错。这是模型: class Message(models.Model): body = models.TextField(_("Body")) sender = models.ForeignKey(AUTH_USER_MODEL, related_name='sent_messages') receiver = models.ForeignKey(AUTH_USER_MODEL, related_name= 'received_messages', null=False, blank=True)
-
您需要将其添加到您的帖子中。快速解决方法是将这个
self.initial = {'recipient': user}更改为self.initial = {'recipient': user.pk}。如果你想显示他们的用户名,虽然它更复杂。或者,您可以显示系统中所有用户的下拉列表,并允许他们选择一个
标签: python django autofill django-messages