0

I want to populate a number of fields based on the website field below. I send the website as a parameter to the API and it returns a number of values in JSON. I then want to send it and store it in the model for that instance.

class newURLposts(models.Model):
    created_on = models.DateTimeField(auto_now_add=True)
    website = models.URLField(max_length=250)   
    domain = models.TextField(blank=True)
    host = models.TextField(blank=True)
    url = models.URLField(blank=True)
    img = models.ImageField(upload_to='link/img/',blank=True)
    title = models.TextField(blank=True)
    description =  models.TextField(blank=True)
    favicon = models.ImageField(upload_to='link/favicon/',blank=True)

    def save(self, *args, **kwargs):
        review_url = self.website
        u = "u=" + review_url
        r = "&r=#####"
        e = "&e=#####"
        t = "&t=json"
        PARAMS12 = u + r + e + t
        URL = "#####"

        site = requests.get(url = URL, params = PARAMS12)
        parsed_site = json.loads(site.content.decode('utf-8'))


        self.domain = parsed_site["domain"]
        self.host = parsed_site["host"]
        self.url = parsed_site["url"]
        self.img = parsed_site["img"]
        self.title = parsed_site["title"]
        self.description = parsed_site["description"]
        self.favicon = parsed_site["favicon"]
        super().save(*args, **kwargs)

    class Meta:
        ordering = ['-created_on']
Das_Geek
  • 2,775
  • 7
  • 20
  • 26
Dellaa
  • 3
  • 3

1 Answers1

0

Resolved the problem - split it over two meathods

class newURLposts(models.Model):
    created_on = models.DateTimeField(auto_now_add=True)
    website= models.URLField(max_length=250)

    #Info from gutURL
    domain = models.TextField(blank=True)
    host = models.TextField(blank=True)
    url = models.URLField(blank=True)
    img = models.ImageField(upload_to='link/img/',blank=True)
    title = models.TextField(blank=True)
    description =  models.TextField(blank=True)
    favicon = models.ImageField(upload_to='link/favicon/',blank=True)

    def parsed_site(self, *args, **kwargs):
        review_url = self.website
        u = "u=" + review_url
        r = "&r=####"
        e = "&e=####"
        t = "&t=json"
        PARAMS12 = u + r + e + t
        URL = "####"

        site = requests.get(url = URL, params = PARAMS12)
        return json.loads(site.content.decode('utf-8'))

    def save(self, *args, **kwargs):
        self.domain = self.parsed_site()["domain"]
        self.host = self.parsed_site()["host"]
        self.url = self.parsed_site()["url"]
        self.img = self.parsed_site()["img"]
        self.title = self.parsed_site()["title"]
        self.description = self.parsed_site()["description"]
        self.favicon = self.parsed_site()["favicon"]
        super(newURLposts, self).save(*args, **kwargs)

    class Meta:
        ordering = ['-created_on']
Dellaa
  • 3
  • 3