Django 获取当前用户的';由'创建;模型类中的字段

Django 获取当前用户的';由'创建;模型类中的字段,django,django-models,django-users,django-request,Django,Django Models,Django Users,Django Request,我目前正在开发一个Django应用程序,我正在尝试将当前用户设置为模型上的默认用户,但它不起作用 created_by = models.ForeignKey(User, default=request.user, null=True, blank=True, on_delete=models.DO_NOTHING, related_name='created_by') 我试图重写save()方法,但它也不起作用,有人对此有经验吗 非常感谢您的帮助参考官方文件。它解释得很好。还有一个例子 fr

我目前正在开发一个Django应用程序,我正在尝试将当前用户设置为模型上的默认用户,但它不起作用

created_by = models.ForeignKey(User, default=request.user, null=True, blank=True, on_delete=models.DO_NOTHING, related_name='created_by')
我试图重写save()方法,但它也不起作用,有人对此有经验吗


非常感谢您的帮助

参考官方文件。它解释得很好。还有一个例子

from django.views.generic.edit import CreateView
from myapp.models import Author

class AuthorCreate(CreateView):
    model = Author
    fields = ['name']

    def form_valid(self, form):
        form.instance.created_by = self.request.user
        return super().form_valid(form)

如果有人遇到这个问题,我会按照a_k_v的建议在视图中执行。 我是这样做的:

我在类中添加了两个字段:

class Class(models.Model):
    created_by = models.ForeignKey(User, on_delete=models.DO_NOTHING, blank=True, null=True, related_name='create')
    updated_by = models.ForeignKey(User, on_delete=models.DO_NOTHING, blank=True, null=True, related_name='update')
然后创建了一个函数:

def created_updated(model, request):
    obj = model.objects.latest('pk')
    if obj.created_by is None:
        obj.created_by = request.user
    obj.updated_by = request.user
    obj.save()
要将其放入my views.py,请执行以下操作:

    if request.method == 'POST':
    form = AddVacation(request.POST)
    if form.is_valid:
        form.save()
        created_updated(Vacation, request)

在模型中根本不能这样做。它需要在视图中完成。关于这一点,前面有很多问题,在本文中也有明确的解释。