【发布时间】:2015-09-30 21:43:39
【问题描述】:
如果这个问题已经被另一个问题所涵盖,我深表歉意 - 我是 Django 的新手,现在可能与 Stack 上的许多其他问题一起盯着这个问题太久了..
使用 Django 1.8.2,我有一个显示用户列表的模型表单,我想从中排除当前用户(即您看不到自己)。我试图通过重写 init 方法来将当前用户从“to_user”列表中排除。我收到以下错误(“邀请没有 to_user”),我不明白。该字段不应该从模型中的 to_user ForeignKey 字段填充吗?
非常感谢您的帮助和时间 -
具体错误是:
我的模特是:
class Invitation(models.Model):
from_user = models.ForeignKey(User, related_name="invitations_sent")
to_user = models.ForeignKey(User, related_name="invitations_received", verbose_name="User to Invite", help_text="This is Help Text") # Verbose name is the form label for Foreigh Key vars
message = models.CharField("Optional Message", max_length=300, blank=True) # Can add string for lavel, Setting blank=True means the field won't be required with ModelForm
timestamp = models.DateTimeField(auto_now_add=True)
我的表单类是:
class InvitationForm(ModelForm):
class Meta: # Class Meta sets the model class that the form needs to be auto-created for
model = Invitation
exclude = ['from_user']
def __init__(self, user, **kwargs):
super(InvitationForm, self).__init__(user, **kwargs)
self.fields['to_user'].queryset = Invitation.objects.exclude(user=self.instance.to_user)
我的观点是:
@login_required
def new_invitation(request):
if request.method == "POST":
invitation = Invitation(from_user=request.user)
form = InvitationForm(data=request.POST, instance=invitation)
if form.is_valid():
form.save()
return redirect('user_home')
else:
form = InvitationForm(user=request.user)
return render(request, "tictactoe/new_invitation.html", {'form' : form})
【问题讨论】:
-
异常提到
Invitation对象没有to_user集(该字段为空白) -
感谢您的帮助,karthikr。
标签: django django-models django-forms django-queryset modelform