我目前正在尝试为PathsOfDomain
字段插入pathToScan, FKtoTld
。问题是,我希望能够从id
表中获取提交值的Tld
字段(请参阅下面的view
),然后使用dbInsert
var提交。问题是EnteredDomain
var以下是DomainNm
表中Tld
列的输入值。
如何才能获得id
中该行的Tld
并将其与dbInsert
一起包含?
我有两张桌子:
class Tld(models.Model):
domainNm = models.CharField(verbose_name="",max_length=40,unique=True,validators=[RegexValidator('^[a-zA-Z0-9]+\.[a-zA-Z]{1,4}$','format: domain.com only','Invalid Entry')])
FKtoClient = models.ForeignKey(User)
def __unicode__(self):
return (self.domainNm)
class PathsOfDomain(models.Model):
pathToScan = models.CharField(max_length=200)
#urlHttpResponse = models.IntegerField(max_length=3)
FKtoTld = models.ForeignKey(Tld) # [id] from Tld table
我有一个Django View
:
def Processinitialscan(request):
# mechanize options here
EnteredDomain = request.GET.get('domainNm')
GetEnteredDomainObjects = Tld.objects.get(DomainNm=EnteredDomain)
EnteredDomainRowID = GetEnteredDomainObjects.objects.get(pk=GetEnteredDomainObjects)
EnteredDomain
值可能看起来像 - site.com
我在上面的view
导入的类中有一个循环。
for url in urls:
mb.open(url) # mechanize opens each url in urls[]
beautifulSoupObj = BeautifulSoup(mb.response().read()) #beautifulsoup reads in the mechanize response
elements = beautifulSoupObj.select("h3.r a") #get just the elements we want
#for each element found, insert the 'href' value for pathToScan Field and include
#PK value (id) field from the submitted domain in table [Tld] into PathsOfDomain - FkToTld field.
#finally, save this all()
for element in elements:
#print(i.attrs["href"])
dbInsert = PathsOfDomain(pathToScan=element.attrs["href"],FKtoTld=EnteredDomainRowID)
dbInsert.save()
非常感谢任何帮助。谢谢。
上面的代码目前正在抛出错误: 经理无法通过Tld实例访问 我想因为这句话:
EnteredDomainRowID = GetEnteredDomainObjects.objects.get(pk=GetEnteredDomainObjects)
答案 0 :(得分:0)
你应该给你的领域更好的名字。没有理由使用缩写格式。请注意,您命名为“FkToTLD”的Django字段表示为实际的TLD对象,因此最好称为TLD
。另外,字段名称和局部变量应该是lower_case_with_underscore
格式。
你的问题本身很难理解。如果您想从域名获取TLD对象,您可以查找它:
domain = TLD.objects.get(DomainNm=entered_domain)
答案 1 :(得分:0)
无法通过Tld实例访问管理器
你的原因在哪里:
GetEnteredDomainObjects = Tld.objects.get(DomainNm=EnteredDomain)
EnteredDomainRowID = GetEnteredDomainObjects.objects.get(pk=GetEnteredDomainObjects)
GetEnteredDomainObjects
是Tld
的一个实例,因此无法访问objects
。
如果您正试图取消主键,那就是:
EnteredDomainRowID = GetEnteredDomainObjects.pk