小编dav*_*yan的帖子

Django 模型多对多和桥接表

我试图了解如何正确设置模型以建立多对多关系,我注意到创建模型时有一个 ManyToManyField 选项,但我似乎无法理解它的逻辑以及如何正确地使其发挥作用。我想分享我的代码并一路解释。

from django.db import models

class Major(models.Model):
    name = models.CharField(max_length=30, db_index=True)

class School(models.Model):
    name = models.Charfield(max_length=50, db_index=True)
    majors = models.ManyToManyField(Major)

class Professor(models.Model):
    ProfessorIDS = models.IntegerField()
    ProfessorName = models.CharField(max_length=100)
    ProfessorRating = models.DecimalField(decimal_places=2,max_digits=4)
    NumberOfRatings = models.CharField(max_length=50)
    school = models.ForeignKey(School , on_delete=models.CASCADE)
    major = models.ForeignKey(Major , on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)

请注意,学校表(班级)有一个多对多的专业,这本质上就是我想要的,目标是拥有一个允许在单个学校下存储多个专业的数据库。

经过一些研究后,我得出的结论是,这没有意义,最好创建一个桥接表,所以我决定像这样创建我的模型......

from django.db import models

class Major(models.Model):
    name = models.CharField(max_length=30, db_index=True)

class School(models.Model):
    name = models.Charfield(max_length=50, db_index=True)


class School_Majors(models.Model):
    school = models.ForeignKey(School, on_delete=models.CASCADE)
    major = models.ForeignKey(Major, on_delete=models.CASCADE)

class Professor(models.Model):
    ProfessorIDS = models.IntegerField()
    ProfessorName …
Run Code Online (Sandbox Code Playgroud)

django django-models python-3.x

7
推荐指数
1
解决办法
4896
查看次数

如何将 EXTERNAL 扩展添加到 selenium (chrome) python

更新的问题:

在这一点上,如果有人可以给我任何关于如何在运行时在 selenium 中添加任何类型的扩展的提示,我的目标是能够运行脚本并让 chrome 安装并激活扩展,因为从什么时候开始您运行 chromedriver,chrome 就像香草一样(没有安装扩展或活动) , 如果有人有任何见解,我将不胜感激!!!

原帖如下

我正在尝试在使用 selenium 时解除阻止 origin 扩展以在我的 chrome 上工作,并且上面的代码似乎失败了,我已经尝试了一些方法来让它工作,但都失败了,所有试图让它工作的尝试都是根据我在此处或在 youtube 上阅读的内容!如果有人能在这里帮助我,那就太好了!

整个代码的导入,我对 selenium 非常陌生,所以我放置了所有我仍在使用的库的导入,以弄清楚什么是做什么的。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
Run Code Online (Sandbox Code Playgroud)

第一次尝试:

option = webdriver.ChromeOptions()
option.add_argument('load-extension=' + 'uBlock-Origin_v1.16.18.crx')
Run Code Online (Sandbox Code Playgroud)

第二次尝试:

path_to_extension("C:\Selenium\uBlock-Origin_v1.16.18.crx")

option = webdriver.ChromeOptions()
option.add_argument('load-extension=' + path_to_extension)
Run Code Online (Sandbox Code Playgroud)

第三次尝试:

#adding ublock Origin
path_to_extension = (r'C:\Selenium\1.16.18_0')

# example option: add 'incognito' …
Run Code Online (Sandbox Code Playgroud)

python selenium python-3.x selenium-chromedriver

2
推荐指数
1
解决办法
3203
查看次数

如何使用python从硒的下拉框中选择项目

我正在尝试遍历下拉列表进行网络抓取,但是我发现我的代码无法正常工作

dropdown = browser.find_element_by_XPATH('//*[@id="department-dropdown"]')
select = Select(dropdown)

select.select_by_value("Accounting")
Run Code Online (Sandbox Code Playgroud)

我收到的错误消息

Traceback (most recent call last):
  File "C:\Users\David\eclipse-workspace\Web_Scrap\setup.py", line 31, in <module>
    dropdown = browser.find_element_by_XPATH('//*[@id="mainContent"]/div[1]/div/div[3]/div/div/span')
AttributeError: 'WebDriver' object has no attribute 'find_element_by_XPATH'
Run Code Online (Sandbox Code Playgroud)

目前,我试图选择至少第一个值,但它没有解决问题

我尝试循环浏览的下拉框中提供的图片带有“检查元素”

下拉框元素不是实际列表的一部分,这似乎有点令人困惑,有人可以让我知道这里的实际情况吗?如果我看错了。

如果有人对我可以怎样实现目标有任何建议

selenium xpath python-3.x selenium-webdriver dropdown

0
推荐指数
1
解决办法
1966
查看次数