/ / comment remplir un champ d'auteur avec le nom d'utilisateur actuel - python, django

comment remplir un champ d'auteur avec le nom d'utilisateur actuel - python, django

J'ai regardé beaucoup d'endroits différents maisaucune de leurs solutions ne fonctionne. Ceci est le plus susceptible de les faire être pour les anciennes versions de Django ou ma propre stupidité. Je crée donc une application de type blog qui, pour une raison quelconque, est appelée critiques au lieu de blog ... de toute façon, je dois remplir automatiquement un champ d'auteur avec le nom d'utilisateur de l'utilisateur connecté. Voici mon 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)

et 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",]

et vues:

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")

Réponses:

2 pour la réponse № 1
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")

Aussi simple que cela. Plutôt que de réellement enregistrer et valider les données, vous enregistrez simplement sans valider, vous êtes alors en mesure de modifier la valeur du champ exclu.