определить и вставить возраст в шаблоне Django - PullRequest
2 голосов
/ 20 февраля 2011

У меня есть mdel, представление и шаблон:

модель

class Peoples(models.Model):
    l_name = models.CharField(max_length=50)
    f_name = models.CharField(max_length=50)
    m_name = models.CharField(max_length=50)
    tab_number = models.CharField(max_length=5)
    birthday = models.DateField(null=True, blank=True)
    post = models.CharField(max_length=250, blank=True)
    workplace = models.ForeignKey(Workplace, null=True, blank=True)
    skill = models.CharField(max_length=20, blank=True)
    dopuska = models.TextField(blank=True)
    srok_dopuskov = models.DateField(null=True, blank=True)
    photo = models.ImageField(upload_to='img',blank=True)
    class Meta:
        ordering = ('l_name',)
    def __unicode__(self):
        return self.l_name
    def age(self):
        import datetime
        return int((datetime.datetime.now() - self.birthday).days / 365.25  )
    age = property(age)

вид

def view_persone(request, tab_number):
    return direct_to_template(request, 'person.html', {
       'persone': Peoples.objects.filter(tab_number=tab_number),
    })

шаблон

{% for person in persone %}
    Возраст: <b>{{ person.age }}</b>
{% endfor %}

Но поле в шаблоне, где должен быть возраст, пусто. почему?

Ответы [ 3 ]

4 голосов
/ 27 марта 2011

Вам нужно сделать

 def age(self):
        import datetime
        return int((datetime.date.today() - self.birthday).days / 365.25  )

как твой день рождения - это DateField.

1 голос
/ 20 февраля 2011

Я думаю, вы сначала определили метод age, а в следующей строке переназначили имя age. Попробуйте

def calculate_age(self):
    import datetime
    return int((datetime.datetime.now() - self.birthday).days / 365.25  )
age = property(calculate_age)

В сторону: Вы можете (и должны) размещать соответствующие части кода здесь, и не ожидайте, что другие будут искать ваш код на другом сайте.

0 голосов
/ 29 сентября 2016

будет отображаться возраст в зависимости от вашего месяца.

в models.py

class Profile(models.Model):
     date_of_birth = models.DateField()

     def age(self):
            import datetime
            dob = self.date_of_birth
            tod = datetime.date.today()
            my_age = (tod.year - dob.year) - int((tod.month, tod.day) < (dob.month, dob.day))
            return my_age

в profile.html

<span>Age : </span> <i> {{ profile.age }} </i>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...