Guys I got a good place to manage all your django and good enough developer and designers for your project just check out the below link to get it all
https://bit.ly/3eUJJcX On Sat, Jul 24, 2021 at 7:36 PM esteem learning center < [email protected]> wrote: > If you want to do some basic django calculations, you can use > django-mathfilters is simple to use for add, subtract, mul, and div > > On Sat, Jul 24, 2021, 3:33 PM [email protected] <[email protected]> > wrote: > >> Thank you Derek for the information. For those that are having similar >> problems this is the solution that worked for me based on Derek's lead.... >> >> ## METHOD 1 ## >> >> # view >> >> def position_view(request): >> >> packet_data = >> TncData.objects.exclude(lat=0).order_by('-dt_heard')[:100] >> >> # loop through query set and add new dictionary key-value pair >> >> for row in packet_data: >> >> row.distance = row.lat*row.lon # example only of calculation >> only not real >> >> return render(request, 'main/position.html', >> {'packet_data':packet_data,}) >> >> # html template snippet >> >> {% for row in packet_data %} >> >> <tr class='atable'> >> <td class='atable'>{{row.callsign}}</td> >> <td class='atable'>{{row.lat|floatformat:2}} N >> {{row.lon|floatformat:2}} W </td> >> <td class='atable' >> style='text-align:right;'>{{row.distance|floatformat:1}} miles</td> >> <td class='atable' >> style='text-align:right;'>{{row.bearing|floatformat:0}} deg</td> >> <td class='atable' style='padding-left:20px;'>{{row.dt_heard|date:"D >> m/d H:i"}}</td> >> </tr> >> >> {% endfor %} >> >> ## METHOD 2 use @property in the model.py file >> >> # Put the data calculations in the model.py file >> >> class TncData(models.Model): >> callsign = models.TextField(max_length=20) >> lat = models.FloatField(null=True, blank=True, default=None) >> lon = models.FloatField(null=True, blank=True, default=None) >> path = models.TextField(max_length=250) >> message = models.TextField(max_length=250) >> dt_heard = models.DateTimeField(auto_now_add=False) >> >> def __str__(self): >> return str(self.callsign) >> >> ## HAVERSINE FORMULA >> >> @property >> def calculate_distance(self): >> >> # Variables >> >> r = 6371 # radius earth km >> >> lat_1 = radians(42.97) >> lon_1 = radians(89.77) >> >> lat_2 = radians(self.lat) >> lon_2 = radians(self.lon) >> >> dlat = lat_1 - lat_2 >> dlon = lon_1 - lon_2 >> >> a = sin(dlat / 2)**2 + cos(lat_1) * cos(lat_2) * sin(dlon / 2)**2 >> >> c = 2 * asin(sqrt(a)) >> >> distance_km = c*r >> distance = distance_km * 0.621 >> >> return(distance) >> >> # html template snippet >> >> {% for row in packet_data %} >> >> <tr class='atable'> >> <td class='atable'>{{row.callsign}}</td> >> <td class='atable'>{{row.lat|floatformat:2}} N >> {{row.lon|floatformat:2}} W </td> >> <td class='atable' style='text-align:right;'>{{ >> *row.calculate_distance|*floatformat:1}} miles</td> >> <td class='atable' >> style='text-align:right;'>{{row.bearing|floatformat:0}} deg</td> >> <td class='atable' style='padding-left:20px;'>{{row.dt_heard|date:"D >> m/d H:i"}}</td> >> </tr> >> >> >> {% endfor %} >> >> >> On Wednesday, July 21, 2021 at 5:01:02 PM UTC-5 [email protected] >> wrote: >> >>> Thanks Derek. I'll give it a try >>> >>> On Wednesday, July 21, 2021 at 8:55:08 AM UTC-5 Derek wrote: >>> >>>> See: >>>> https://stackoverflow.com/questions/54412377/adding-values-to-django-queryset >>>> >>>> >>>> VIEW >>>> >>>> def position_view(request): >>>> >>>> packet_data = >>>> TncData.objects.exclude(lat=0).order_by('-dt_heard')[:100] >>>> for packet in packet_data: >>>> *# my complex math calculation* >>>> * packet.distance = "# complex math formula using packet.lat and >>>> packet.lon"* >>>> >>>> return render( >>>> request, >>>> 'main/position.html', >>>> {'packet_data': packet_data, 'distance': distance}) >>>> >>>> TEMPLATE >>>> >>>> *# suggest you use a better term than "field" => maybe "record"?* >>>> {% for field in packet_data %} >>>> <tr class='atable'> >>>> <td class='atable'>{{field.callsign}}</td> >>>> <td class='atable'>{{field.lat|floatformat:2}} N >>>> {{field.lon|floatformat:2}} W </td> >>>> <td class='atable'></td> >>>> *<td class='atable'>{{field.distance}}</td>* >>>> >>>> >>>> HTH! >>>> >>>> On Tuesday, 20 July 2021 at 22:25:04 UTC+2 [email protected] wrote: >>>> >>>>> Hello, >>>>> >>>>> I am trying to perform a complex math calculation from a django query >>>>> set. How can I pass the results to the template for display? Annotations >>>>> won't work since the math is not a simple sum, diff or average. >>>>> >>>>> MODEL >>>>> >>>>> class TncData(models.Model): >>>>> callsign = models.TextField(max_length=20) >>>>> lat = models.FloatField(null=True, blank=True, default=None) >>>>> lon = models.FloatField(null=True, blank=True, default=None) >>>>> path = models.TextField(max_length=250) >>>>> message = models.TextField(max_length=250) >>>>> dt_heard = models.DateTimeField(auto_now_add=False) >>>>> >>>>> def __str__(self): >>>>> return str(self.callsign) >>>>> >>>>> VIEW >>>>> >>>>> def position_view(request): >>>>> >>>>> packet_data = >>>>> TncData.objects.exclude(lat=0).order_by('-dt_heard')[:100] >>>>> >>>>> *# my complex math calculation* >>>>> * # need to do something like append distance to packet_data like >>>>> packet_data.distance* >>>>> >>>>> * distance = "# complex math formula using packet_data.lat and >>>>> packet_data.lon"* >>>>> >>>>> return render(request, 'main/position.html', >>>>> {'packet_data':packet_data,}) >>>>> >>>>> TEMPLATE >>>>> >>>>> {% for field in packet_data %} >>>>> >>>>> <tr class='atable'> >>>>> <td class='atable'>{{field.callsign}}</td> >>>>> <td class='atable'>{{field.lat|floatformat:2}} N >>>>> {{field.lon|floatformat:2}} W </td> >>>>> <td class='atable'></td> >>>>> *<td class='atable'>{{packet_data.distance}}</td>* >>>>> <td class='atable'>{{field.dt_heard|date:"D m/d H:i"}}</td> >>>>> </tr> >>>>> >>>>> {% endfor %} >>>>> >>>>> >>>>> -- >> You received this message because you are subscribed to the Google Groups >> "Django users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/django-users/b5115c63-e000-48ee-8e5d-7f923c12731bn%40googlegroups.com >> <https://groups.google.com/d/msgid/django-users/b5115c63-e000-48ee-8e5d-7f923c12731bn%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/django-users/CAN0Tv2UUioj4SS-P5a-AFjUqAPwP2_yMxQ4zX06zaprQTf1wfg%40mail.gmail.com > <https://groups.google.com/d/msgid/django-users/CAN0Tv2UUioj4SS-P5a-AFjUqAPwP2_yMxQ4zX06zaprQTf1wfg%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- Best Wishes *Mr Tchouanga* -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CANRJ%3D3mjwwPhJR9WQx0hQFc1a7YCa2oGeTyg1eFYqHzsr%3DK6zw%40mail.gmail.com.

