【问题标题】:Unable to import models Django无法导入模型 Django
【发布时间】:2020-11-01 11:29:46
【问题描述】:

我正在尝试使用模型将数据从网站下载到数据库。我的项目结构:

    -backdjango
      -app[folder]
        -__pycache__[folder]
        -templates[folder]
        -__init__.py
        -settings.py
        -urls.py
        -views.py
        -wsgi.py
        -drivers[folder]
          -__pycache__[folder]
          -management[folder]
            -commands[folder]
              -create_drivers.py
          -migrations[folder]
          -__init__.py
          -admin.py
          -apps.pyc
          -models.py
          -tests.py
          -views.py
        -node_modules[folder]
        -static[folder]
        -venv[folder]
        -.babelrc
        -.eslintrc.js
        -db.sqlite3
        -manage.py
        -package-lock.json
        -package.json
        -Pipfile
        -Pipfile.lock
        -webpack.common.js
        -webpack.dev.js
        -webpack.prod.js
        -yarn.lock

我正在使用 Django、Beautiful Soup 和 WebPack。我已经从this repo 下载了现成的配置。在 drivers->models.py 我有一个模型:

from  django.db import models

# Create your models here.
class Driver(models.Model):

    name=models.CharField(max_length=150)

在 app->settings.py 中,我添加了已安装的应用程序“驱动程序”。我的问题在驱动程序->管理->命令->create_driver.py:

import re

import requests
from bs4 import BeautifulSoup

from django.apps import apps
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'backdjango.settings'
from drivers.models import Driver
from django.core.management.base import BaseCommand, CommandError



class Command(BaseCommand):
        

        def handle(self, *args, **options):
            self.save_to_db(name)

        def getDriver(self):
            r=requests.get(
                "http://www/formula1.com/en/drivers/lewis-hamilton.html")
            soup= BeautifulSoup(r.text, "html.parser")
            name= soup.find("h1",**{"class":"driver-name"}).contents[0]
            print(name)
            return Driver(name=name)

        def save_to_db(self,name):
            Driver.objects.name.save()    
            

符合from drivers.models import Driver我有消息Unable to import 'drivers.models'pylint(import-error)

我已尝试通过多种方式解决此问题,但在 Internet 上找不到任何帮助。

【问题讨论】:

  • 看起来您的 drivers 文件夹嵌套在另一个应用程序文件夹 app 中?您可以尝试像这样导入:from app.drivers.models import Driver

标签: python django django-models beautifulsoup


【解决方案1】:

我会完全删除 app 文件夹,将其中的所有内容移到父文件夹“backdjango”中。

我会将驱动程序应用重命名为更合乎逻辑的名称。一般项目的主题是FormulaOne吗?然后也许标记应用程序 FormulaOne。这不是必需的,但它可以让您避免将来在Drivers 应用程序和它的子模型Driver 之间产生混淆。

重构完成后,您需要迁移数据库以实例化数据库中的 Driver 模型。

$ python manage.py makemigrations

这应该会检测并生成 Driver 模型的迁移文件。

$ python manage.py migrate

这应该会检测到新的未处理迁移文件并将其安装到您的数据库中。

我会删除 create_driver.py 命令——这不是 django 向数据库添加新记录的正确方法。相反,请将此代码与您的 BeautifulSoup 解析结合使用:

from FormulaOne.models import Driver

# Now, to get a driver:
result = Driver.objects.filter(name=name).first()

# To save a driver:
Driver.objects.create(name=name)

【讨论】:

    猜你喜欢
    • 2020-06-25
    • 2017-10-21
    • 2022-01-07
    • 2020-12-14
    • 2018-04-19
    • 2016-08-13
    • 2011-12-12
    • 1970-01-01
    • 2016-07-13
    相关资源
    最近更新 更多