当前用户作为评论的autor(DJANGO)

时间:2017-11-05 10:21:06

标签: django python-3.x foreign-keys

我创建了一个名为'Comentario'的模型,其中记录的用户可以创建自己的评论。如何自动保存为已登录用户的评论作者。在这里,我展示了我的架构:

models.py

class Comentario (models.Model):
    titulo = models.CharField(max_length=50)
    texto = models.CharField(max_length=200)
    autor = models.ForeignKey (Perfil, editable=False, blank=True)
    fecha_publicacion = models.DateTimeField(auto_now_add=True)
    tag = models.ManyToManyField(Tags, blank=True)

    def __str__(self):
        return (self.titulo)

views.py

class ComentarioCreate (LoginRequiredMixin,CreateView):
    model = Comentario
    form_class = ComentarioForm
    template_name = 'home/comentario_form.html'
    success_url = reverse_lazy ('home:listar')

    def save(self):
        autor=self.request.user.username
        user.save()

forms.py

class ComentarioForm(forms.ModelForm):

    class Meta:

        model = Comentario

        fields = [
            'titulo',
            'texto',
            'tag',
        ]
        labels = {
            'titulo': 'Titulo',
            'texto' : 'Descripcion',
            'tag' : 'Etiquetas',
        }
        widgets = {
            'titulo':forms.TextInput(attrs={'class':'form-control'}),
            'texto':forms.TextInput(attrs={'class':'form-control'}),        
            'tag':forms.CheckboxSelectMultiple(),
        }

Perfil是一个继承AbstractUser形式的模型。 models.py     class Perfil(AbstractUser):         nom_puesto = models.ForeignKey(Puesto,blank = True)

    def __str__(self):
        return '{}'.format(self.username)

如何在“autor”字段中输入已登录用户的用户名?

谢谢你的回答!

1 个答案:

答案 0 :(得分:0)

要覆盖的方法是form_valid,而不是保存;请参阅models and request.user,其中详细说明了该做什么。