Mi modelo tiene 2 valores. Uno es la URL y el otro es el precio. Al crear un nuevo objeto a través del panel de administración de django. Quiero que cuando ingrese la URL en el campo de entrada, se envíe una solicitud a esa URL específica y se obtenga el precio actualizado para el campo y llénelo. He revisado la documentación y el material de ayuda, pero no encontré ayuda. Cualquier ayuda en este asunto es muy apreciada. Gracias
Puedes hacer algo como esto:
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)
nota: el código no está probado, pero es suficiente para dar una idea general para continuar.
Estuve luchando con esto durante tanto tiempo y finalmente lo logré. lo que hice es
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)
Espero que todavía sea útil, luché con esto por un tiempo.