Django 2.1.5: сохранение текущего имени пользователя в записи блога - PullRequest
0 голосов
/ 18 апреля 2020

Я очень плохо знаком с Django и пытаюсь создать небольшое приложение для своей семьи с некоторыми базовыми c функциями, одним из которых является приложение для блога. Теперь я хочу сохранить автора записи в блоге в модели статьи, чтобы сохранить ее в базе данных. В конце в записи блога я хочу заголовок, который отображает автора и дату и время.

Я нашел несколько подходов к этому, но некоторые, как ни один из них до сих пор не работал для меня. Последнее, что я сейчас сделал, это попытался захватить имя пользователя в представлении с помощьюquesques.user.get_username (), а затем заполнить поле в моей форме этой строкой в ​​качестве начального значения. Почему-то это просто не проходит, я всегда получаю сообщение об ошибке «поле обязательно для заполнения» ...

Вот мой блог-create-view.py:

def blog_create_view(request):
    user = request.user.get_username()
    data = {'author': user}
    form = BlogForm(request.POST, data)
    if form.is_valid():
        form.save()
        return HttpResponseRedirect('/blog/blog-create/thanks')
    else:
        print(form.errors)
        form = BlogForm()

    context = {
        'articleform' : form,
    }
    return render(request, "blog-create.html", context)

this это форма:

class BlogForm(forms.ModelForm):
    title   = forms.CharField(label='',
                    widget=forms.TextInput(attrs={"placeholder":"Titelfeld"}))
    text    = forms.CharField(
                        label='',
                        widget=forms.Textarea(
                        )
                    )
    author  = forms.CharField(widget=forms.HiddenInput())

    class Meta:
        model = Article
        fields = [
            'title',
            'text',
        ]

и это модель:

class Article(models.Model):
    title       = models.CharField(blank=False,max_length=1000)
    text        = models.CharField(blank=False, default='Text', max_length=10000)
    datetime    = models.DateTimeField(auto_now=True)
    featured    = models.BooleanField(default='False')
    author      = models.CharField(max_length=1000)

Помощь очень ценится! Я очень расстроен, пытаясь понять это

1 Ответ

0 голосов
/ 18 апреля 2020

Если вы хотите добавить имя автора в качестве текущего имени пользователя, вошедшего в систему, вы можете сделать это следующим образом. И удалите автора в виде

if form.is_valid():
        instance = form.save(commit=False)
        instance.author = request.user.username
        instance.save()

. Сказав это, лучше изменить автора на foreignkey from django.contrib.auth.models import User и назначить request.user, а не username, поэтому что вы можете отфильтровать статьи по Article.objects.filter(author=request.user)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...