title: What does Django's @property do?
body: <p>What is <code>@property</code> in Django?</p>
  <p>Here is how I understand it: <code>@property</code> is a decorator for methods in a class that gets the value in the method.</p>
  <p>But, as I understand it, I can just call the method like normal and it will get it. So I am not sure what exactly it does.</p>
  <p>Example from the <a href="https://docs.djangoproject.com/en/3.1/topics/db/models/#model-methods" rel="noreferrer">docs</a>:</p>
  <pre><code>from django.db import models
  
  class Person(models.Model):
      first_name = models.CharField(max_length=50)
      last_name = models.CharField(max_length=50)
      birth_date = models.DateField()
  
      def baby_boomer_status(self):
          &quot;Returns the person's baby-boomer status.&quot;
          import datetime
          if self.birth_date &lt; datetime.date(1945, 8, 1):
              return &quot;Pre-boomer&quot;
          elif self.birth_date &lt; datetime.date(1965, 1, 1):
              return &quot;Baby boomer&quot;
          else:
              return &quot;Post-boomer&quot;
  
      @property
      def full_name(self):
          &quot;Returns the person's full name.&quot;
          return '%s %s' % (self.first_name, self.last_name)
  </code></pre>
  <p>What is the difference of if it is there vs if it isn't?</p>