在提交Django表格时获取GET Var的PK

时间:2013-11-19 17:38:50

标签: python mysql django insert crud

我目前正在尝试为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)

2 个答案:

答案 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)

GetEnteredDomainObjectsTld的一个实例,因此无法访问objects

如果您正试图取消主键,那就是:

EnteredDomainRowID = GetEnteredDomainObjects.pk