Django 'str' объект не имеет атрибута 'save' - PullRequest
0 голосов
/ 26 ноября 2018

У меня проблема с использованием Django в views.py ....... ошибка в строке

post = text_headlines.save (commit = False)

Значение исключения:
У объекта 'str' нет атрибута 'save'

ниже - мой код в forms.py, models.py и views.py

спасибо, извините, я новичок в Django, все еще нужновремя учиться

forms.py

from django import forms
from .models import Post

class PostForm(forms.ModelForm):

    class Meta:
        model = Post
        fields = ('URL',)

models.py

from django.db import models

# Create your models here.
from django.conf import settings
from django.utils import timezone


class Post(models.Model):
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    URL = models.URLField(max_length=200)
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

views.py

from django.shortcuts import render, redirect
from .forms import PostForm
from django.utils import timezone
from django.shortcuts import render, get_object_or_404
from .models import Post
from urllib.request import Request, urlopen as uReq 
from bs4 import BeautifulSoup as soup

#Post.objects.get(pk=pk)
def post_detail(request, pk):
    post = get_object_or_404(Post, pk=pk)
    return render(request, 'post_detail.html', {'post': post})

def make_soup(website) :

    req =  Request(website,headers = {'User-Agent' : 'Mozilla/5.0'})
    uClient = uReq(req)
    page_html = uClient.read()
    uClient.close()
    page_soup = soup(page_html, 'html.parser')
    return page_soup

def post_new(request) :
    if request.method == "POST":
        form = PostForm(request.POST)
        print(form)
        if form.is_valid():
            url = form.cleaned_data['URL']
            website = make_soup(url)
            headlines = website.findAll('h3')
            for item in headlines :
                top = item.a
                text_headlines = top.text
                print(text_headlines)
                print()
                post = text_headlines.save(commit=False)
            post = form.save(commit=False)
            post.author = request.user
            post.published_date = timezone.now()
            post.save()
        return redirect('post_detail', pk=post.pk)
    else:
        form = PostForm()

    return render(request, 'post_edit.html', {'form':form})
...