如何用当前用户名填写作者字段

时间:2018-03-21 20:07:21

标签: python django

我看了很多不同的地方,但没有一个解决方案有效。这很可能是为了旧版本的django或我自己的愚蠢。所以我正在创建一个博客类型的应用程序,由于某种原因被称为评论而不是博客......无论如何,我需要使用登录用户的用户名自动填写作者字段。这是我的models.py:

from django.db import models
from django.contrib.auth.models import User

#vars

# Create your models here.
class reviews(models.Model):
    title = models.CharField(max_length=100)
    author = models.ForeignKey(User, on_delete=models.PROTECT,)
    body = models.TextField()
    date = models.DateTimeField(auto_now_add=True, blank=True)

和forms.py:

from django import forms
from django.forms import ModelForm
from .models import reviews
from django.contrib.auth.decorators import login_required
class CreatePost_form(ModelForm):
    class Meta:
        model = reviews
        exclude = ['author']
        fields = ['title', 'body',]

和观点:

from django.shortcuts import render, render_to_response
from .forms import CreatePost_form
from django.http import HttpResponseRedirect

# Create your views here.
def reviewlist(request):
    return render
def index(request, ):
    return render(request, template_name="index.html")
def CreatePost(request):
    form = CreatePost_form(request.POST)
    if form.is_valid():
        form.save()
        return HttpResponseRedirect('/reviews/succesfulpost')
    return render(request, "reviews/CreatePostTemplate.html", {'form':form})
def succesfulpost(request):
    return render(request, "reviews/succesfulpost.html")

1 个答案:

答案 0 :(得分:2)

def CreatePost(request):
    form = CreatePost_form(request.POST)
    if form.is_valid():
        form.save(commit=False)
        form.author = request.user
        form.save()
        return HttpResponseRedirect('/reviews/succesfulpost')

就这么简单。您只需保存而不提交,而不是实际保存和提交数据,然后您就可以更改排除字段的值。

相关问题