我试图了解如何正确设置模型以建立多对多关系,我注意到创建模型时有一个 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) 更新的问题:
在这一点上,如果有人可以给我任何关于如何在运行时在 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) 我正在尝试遍历下拉列表进行网络抓取,但是我发现我的代码无法正常工作
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)
目前,我试图选择至少第一个值,但它没有解决问题
下拉框元素不是实际列表的一部分,这似乎有点令人困惑,有人可以让我知道这里的实际情况吗?如果我看错了。
如果有人对我可以怎样实现目标有任何建议