python - How to compare user logged's field with other user in Django's views -
suppose have following model:
import ephem class person(models.model): username = models.foreignkey(user, blank=false) slug = models.slugfield(blank=false) location = foreignkey(location, blank=true) # return longitude & latitude city pyephem library city = models.charfield(max_length=255, blank=false, default='') def __str__(self): return self.username def get_city(self): city = ephem.observer() city.lon = float(self.location.longitude) city.lat = float(self.location.latitude) return city # return city location field def save(self, *args, **kwargs): if not self.pk: self.slug = slugify(self.username) super(person, self).save(*args, **kwargs)
how make programmatically in django's views compare between attribute of logged user , attribute's other user? which's username field based on slug & there's additional object other python library (pyephem), following:
def detail(request, slug): instance = person.objects.all() city = ........ # city city fields @ person model, city's value current user logged have value city0 , city's values other user have value city1, city2, city3 et seq... distance in instance: # if current user logged visiting other user detail compare them each other city0 , city1, city0 , city2, city0 , city3 et seq.... distance = ... # calculate distance of city's user logged & city's other user # i'm not sure in area results of comparing between attribute of current user logged , attribute of other user return render( request, "detail.html", { 'distance': distance, } )
*updated
i updated model above based on @cezar answer , add function city:
based on understand, probable many users got 1 slug in model. if want compare between logged user , group of users slug generate queryset , iterate over.
def detail(request, slug=none): instances = person.objects.filter(slug=slug) if instances.count() == 0: return httpresponse('slug returns 0 matches') else: object in instances: city0 , city1
ok, more details! after post update think request.user
object looking for:
def calculate_distance(user1, user2): #do here like: #user1.location.lat user2.location.long etc. return distance_between def detail(request, slug=none): instance = person.objects.get(slug=slug) observer_user = request.user #added below variable clarify code user_to_be_observed = instance return calculate_distance(observer_user, user_to_be_observed)
Comments
Post a Comment