Модель Django получила неожиданный ключевой аргумент
Я хочу сохранить данные ползунков в db, но возникает ошибка неожиданного аргумента ключевого слова.
reviewData() got an unexpected keyword argument 'reviewText'
некоторые части crawling.py
for j in range(review_cnt):
if soup.select_one(f'li:nth-child({j+1}) > div._1Z_GL > div.PVBo8 > a > span') != None:
if(len(soup.select(f'li:nth-child({j+1}) > div._1Z_GL > div.PVBo8 > a > span'))) == 2:
driver.find_element_by_css_selector(f'li:nth-child({j+1}) > div._1Z_GL > div.PVBo8 > a').send_keys(Keys.ENTER)
current_page = driver.page_source
soup = BeautifulSoup(current_page, 'html.parser')
time.sleep(1)
review_text = soup.select_one(f'li:nth-child({j+1}) > div._1Z_GL > div.PVBo8 > a > span').text.strip() #텍스트 추출
star_rate = soup.select_one(f'li:nth-child({j+1}) > div._1Z_GL > div._1ZcDn > div._3D_HC > span._2tObC').text
review_data.append((place_name, review_text, star_rate))
review_obj = {
'place' : place_name,
'review' : review_text,
'rate' : star_rate
}
review_dict.append(review_obj)
for item in review_dict:
reviewData(placeName = item['place'], reviewText = item['review'], starRate = item['rate']).save() #this line has error
models.py
from django.db import models
# Create your models here.
class reviewData(models.Model):
placeName = models.CharField(max_length=50)
reviewText = models.TextField
starRate = models.FloatField
Я не знаю, где исправить. Нужно ли мне добавить что-то еще?
Возможно, это потому, что вы забыли скобки
from django.db import models
# Create your models here.
class reviewData(models.Model):
placeName = models.CharField(max_length=50)
reviewText = models.TextField()
starRate = models.FloatField()
Поля в вашей модели должны быть экземплярами Field
, а не просто ссылкой на тип (т.е. его нужно вызывать с помощью ()
)
class reviewData(models.Model):
# placeName is an instance of Field which is correct (called with ())
placeName = models.CharField(max_length=50)
# reviewText is a reference to a type (not called with `()`)
reviewText = models.TextField
# starRate is also just a reference to type instead of instance
starRate = models.FloatField
ваша модель должна выглядеть следующим образом (+применение правил PEP8 для имен переменных - классы CamelCase
начинаются с заглавных букв, атрибуты должны быть snake_case
)
class ReviewData(models.Model):
place_name = models.CharField(max_length=50)
review_text = models.TextField()
star_rate = models.FloatField()