Skip to main content
 首页 » 编程设计

python之如何在 Django 中为模型设置默认值

2025年05月04日22wuhuacong

我想创建一个具有发件人、收件人和消息的邀请应用。 如何将当前登录用户设置为不可变的发件人?

在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/