自身过滤器存在问题,或者为什么列表没有方法“apend”(Python)

自身过滤器存在问题,或者为什么列表没有方法“apend”(Python),python,django,Python,Django,我尝试编写自己的过滤器。但它不起作用,我不明白为什么。表regimeCalendar包含具有相同列值日期的行,我希望我的筛选器只返回不同的值,也许我走错了方向?在使用my filter的字符串中指向模板是一个错误: 'datetime.date' object has no attribute 'append' 我的筛选文件: ... @register.filter(is_safe=False) def get_distinct_dates(value): "

我尝试编写自己的过滤器。但它不起作用,我不明白为什么。表regimeCalendar包含具有相同列值日期的行,我希望我的筛选器只返回不同的值,也许我走错了方向?在使用my filter的字符串中指向模板是一个错误:

'datetime.date' object has no attribute 'append'
我的筛选文件:

...
    @register.filter(is_safe=False)
    def get_distinct_dates(value):
        """Adds the arg to the value."""
        try:
            results = []
            for item in value:
                add = True
                for result in results:
                    if result == item.regimeCalendar.date:
                        add = False
                        break
                if add:
                    results.append(item.regimeCalendar.date)
            while len(results) < 21:
                result.append("")
            return results
        except (ValueError, TypeError):
            return ''
views.py文件:

class RegimeCalendar(models.Model):
    patient = models.ForeignKey(Patient)
    date = models.DateField(default=datetime.now, unique=True)

    class Meta:
        ordering = ['date']
        unique_together = ('patient', 'date')


class AppointmentCalendar(models.Model):
    added_at = models.DateTimeField(default=datetime.now, blank=True)
    appointment = models.ForeignKey(Appointments)
    regimeCalendar = models.ForeignKey(RegimeCalendar)
    patient = models.ForeignKey(Patient)
    doctor_mark = models.BooleanField(default=False)
    nurse_mark = models.BooleanField(default=False)
...
context['AppointmentCalendar'] = AppointmentCalendar.objects.filter(patient=patient)
...
我的模板html文件:

{% for item in AppointmentCalendar|get_distinct_dates %}
                ...
            {% endfor %}
改变

您只需要添加一个s。结果.append。
result.append("")  # result is a date object
results.append("")  # results is a list