title: Best practices for GeoDjango Models
body: <p>I have a classic GeoDjango model</p>
  
  <pre><code>from django.contrib.gis.db import models
  
  class Location(models.Model):
    vessel    = models.ForeignKey(Vessel, on_delete=models.CASCADE)
    timestamp = models.DateTimeField(auto_now_add=True, blank=True)
    point     = models.PointField()
  </code></pre>
  
  <p>However usage seems quite clumsy;</p>
  
  <pre><code>&gt;&gt;&gt; foo = somevessel.location_set.create(point=Point(5, 23))
  &gt;&gt;&gt; foo.point.x
  5.0
  </code></pre>
  
  <p>I still want to store the location as a point but would prefer to interact with the model with more native looking code, something like</p>
  
  <pre><code>&gt;&gt;&gt; foo = somevessel.location_set.create(latitude=5, longitude=12)
  &gt;&gt;&gt; foo.latitude
  5.0
  </code></pre>
  
  <p>Is this against best practices? And is there a simple way to achieve this in Django?</p>