从Django管理面板调用Rest Api

时间:2017-04-21 06:55:51

标签: django django-admin

我的模型有2个值。一个是URL,另一个是价格。当通过django管理面板创建一个新对象时。我希望当我在输入字段中输入URL时,应该将请求发送到该特定URL并获取该字段的更新价格和填充它。我已经通过文档和帮助材料,但没有找到帮助。在此问题的任何帮助非常感谢。 谢谢

2 个答案:

答案 0 :(得分:4)

您可以这样做:

 import requests
 import json


class Model(model.Model):
    url=models.URLField()
    price=models.FloatField()

    def save(self, *args, **kwargs):
        resp = request.gets(self.url)
        #assuming that json response looks like this: {'price': 2000} 
        resp_str = resp.content.decode()
        resp_dict = json.loads(resp_str)
        self.price = resp_dict.get('price')
        super().save(*args, **kwargs)

注意:代码未经过测试,但足以提供进一步的进展。

答案 1 :(得分:0)

我对此持续了很长时间,最后我完成了它。 我做的是

models.py
class Testone(models.Model):
    url = models.URLField()
    price = models.DecimalField(max_digits=30,decimal_places=5)

admin.py
@admin.register(Testone)

class PriceAdmin(admin.ModelAdmin):
    fields = ['url']
    def save_model(self, request, obj, form, change):
        obj.price = poang.ikea_ru(request.POST['url'])['price'] # calls external function w/ the requests data. 
#function returns dict that's why i use ['price'] to get a value from the dict
        super(PriceAdmin,self).save_model(request, obj, form, change)

我希望这仍然有用,我一会儿就挣扎了。