我的模型有2个值。一个是URL,另一个是价格。当通过django管理面板创建一个新对象时。我希望当我在输入字段中输入URL时,应该将请求发送到该特定URL并获取该字段的更新价格和填充它。我已经通过文档和帮助材料,但没有找到帮助。在此问题的任何帮助非常感谢。 谢谢
答案 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)
我希望这仍然有用,我一会儿就挣扎了。