Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当基本django用户模型被覆盖时,如何正确地处理作为作者的当前登录用户?_Python_Django - Fatal编程技术网

Python 当基本django用户模型被覆盖时,如何正确地处理作为作者的当前登录用户?

Python 当基本django用户模型被覆盖时,如何正确地处理作为作者的当前登录用户?,python,django,Python,Django,交易如下: users/models.py(这里我覆盖了基于django的模型): 并使用(例如,当我添加对象(帖子时))objects/views.py: from django.shortcuts import render, redirect from django.views import generic from objects.models import Object, ProfileUser from .forms import ObjectForm, CommentForm fr

交易如下:

users/models.py(这里我覆盖了基于django的模型):

并使用(例如,当我添加对象(帖子时))objects/views.py

from django.shortcuts import render, redirect
from django.views import generic
from objects.models import Object, ProfileUser
from .forms import ObjectForm, CommentForm
from django.contrib import messages


class UserObjectsView(generic.ListView):
    template_name = 'user_objects.html'

    def get_queryset(self):
        user_id = self.kwargs['pk']
        return Object.objects.filter(author_id = user_id)


def add_object(request):
    if not request.user.is_authenticated:
        messages.info(request, 'За да добавите нов Обект, трябва да сте регистриран потребител!')
        return redirect('account_login')
    form = ObjectForm(request.POST or None)
    if form.is_valid():
        obj = form.save(commit=False)
        obj.author = ProfileUser.objects.get(user=request.user)
        obj.save()
        messages.success(request, 'Успешно добавихте нов Обект, може да видите вашите обекти във вашия профил!')
        return redirect('home')

    context = {
        'form': form
    }

    return render(request, "add_object.html", context)

def show_object(request, pk):
    obj = Object.objects.get(id=pk)

    context = {
        'object': obj
    }

    return render(request, "show_object.html", context)

def add_comment_to_object(request, pk):
    obj = Object.objects.get(id=pk)
    form = CommentForm(request.POST or None)
    if form.is_valid():
        comment = form.save(commit=False)
        comment.object = obj
        user = request.user
        author = ProfileUser.objects.get(user=user)
        comment.author = author
        comment.save()
        return redirect('home')
    else:
        form = CommentForm()
        context = {
            'form': form
        }
        return render(request, 'add_comment.html', context)
如您所见,我还使用这些行来获取当前用户:

obj.author = ProfileUser.objects.get(user=request.user)

但我不太确定,这是正确的方法?

你的问题到底是什么?你想实现什么?你当前的代码出了什么问题?@Vincent没有错误。我很好奇这是正确的方法,还是有更好的方法。这是正确的方法。你能做的就是给你的代码增加一些“安全性”。例如如果当前用户找不到ProfileUser,会发生什么情况。你可以试一下,除了块。此外,是否始终为登录用户创建ProfileUser?如果没有,您可以对ProfileUser实例使用get\u或\u create方法。您的问题是什么?你想实现什么?你当前的代码出了什么问题?@Vincent没有错误。我很好奇这是正确的方法,还是有更好的方法。这是正确的方法。你能做的就是给你的代码增加一些“安全性”。例如如果当前用户找不到ProfileUser,会发生什么情况。你可以试一下,除了块。此外,是否始终为登录用户创建ProfileUser?如果没有,您可以为ProfileUser实例使用get\u或\u create方法。
obj.author = ProfileUser.objects.get(user=request.user)