2010-12-13 58 views
1

ma question est similaire à this question em en utilisant geoip pour trouver le latitide et la longitude d'un utilisateur via l'adresse IP. je fais quelque chose comme ça dans mes vuesessayer de remplir automatiquement les champs en utilisant les vues django

g=Geoip() 
lat,lon=g.lat_lon(some ip) 

ici, je veux que les champs de formulaires à remplir automatiquement quelque chose comme

latitude=lat 
longitude=lon 
userform.save() 

et ne veux pas remplacer la méthode de sauvegarde que je suis assez nouveau à Django et aucune idée de la façon dont ils fonctionnent. J'ai essayé le code de lien ci-dessus mais incapable de le faire fonctionner pour moi. comment est-ce que je peux autopopuler les champs de latitude et de longitude dans views.py

Répondre

4

Ah, plongez juste dedans. À moins que vous fassiez quelque chose vraiment stupide vous ne blesserez rien. BTW, "stupide" inclut le faire sur votre site de production avec une base de données non sauvegardée.

Un point important à retenir est que vous n'êtes pas la méthode d'écraser save(), vous fournissez une version spécifique à la classe de ce qui peut, à son tour, appelez la méthode save() du parent. Par exemple.

class MyModel(models.Model): 
    ... 
    def save(self): 
     # whatever you need to do to the object before the save 
     super(MyModel, self).save() # replace MyModel with *your* class name 

Vous pouvez également appeler super() d'abord, puis faire des choses par la suite. Si tout votre routine a été appelez super() vous auriez une méthode correcte (mais inutile) save().

Voir the Python docs pour plus d'informations.

+0

thats sons gud bhut que dois-je écrire dans views.py – Rida

+0

Je ne suis pas sûr de comprendre votre question. Vous pouvez écrire tout ce que vous aimez dans votre vue; c'est juste du code. J'ai supposé (toujours une mauvaise chose) que votre valeur 'some ip' était * dans * le formulaire (vous n'avez pas dit d'où il venait) et que vous vouliez remplir automatiquement des champs de modèles supplémentaires quand vous avez fait' save() '. –