我想创建一个具有发件人、收件人和消息的邀请应用。 如何将当前登录用户设置为不可变的发件人?
在model.py中
class Invitation(models.Model):
from_user = models.CharField(max_length=100)
to_user = models.ForeignKey(User, related_name="invitations_received")
message = models.CharField(max_length=300)
timestap = models.DateTimeField(auto_now_add=True)
def __str__(self):
return "{} to {}: {}".format(self.from_user, self.to_user, self.message)
在views.py中
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from .models import Game
from .models import Invitation
from .forms import InvitationForm
@login_required
def new_invitation(request):
if request.method == 'POST':
form = InvitationForm(data=request.POST, from_user=request.user)
if form.is_valid():
form.save()
return redirect('profiles_home')
else:
form = InvitationForm()
return render(request, "arosis/new_invitation.html", {'form': form})
在forms.py中
from django.forms import ModelForm
from .models import Invitation
from django.shortcuts import render
class InvitationForm(ModelForm):
class Meta:
model = Invitation
请您参考如下方法:
您不能简单地默认为当前用户,因为 Django ORM 通常不知道 Django 身份验证系统。您应该:
1) 在创建模型实例时传递 request.user,例如:
invitation = Invitation(from_user=request.user)
或
2) 使用中间件在每次保存时将当前用户添加到模型中。您可以尝试以下软件包之一:https://www.djangopackages.com/grids/g/model-audit/
