从自我对象获取日期

时间:2017-03-31 15:21:35

标签: django python-3.x django-views

我正在尝试从当前项目中提取日期字段。我似乎无法正确使用语法。我如何从我刚刚提交的表单中获取日期数据?每当我尝试下面的代码时,我都会收到以下错误:

'NoneType' object has no attribute 'get'

views.py

class EntryCreate(CreateView):
    form_class = EntryForm
    template_name = 'argent/entry_form.html'

    def form_valid(self, form):
        e_item = self.object.get()
        e_date = e_item.get('date')
        e_month = e_date.strftime('%B')
        e_year = e_date.year
        qs = MonthYear.objects.filter(month=e_month, year=e_year)

models.py

class Entry(models.Model):
    date = models.DateField(blank=True, null=True,)
    euros = models.CharField(max_length=500, blank=True, null=True)
    comments = models.CharField(max_length=900, blank=True, null=True)

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您应该尝试使用self.object.date

我发现了这个:Django Docs: Form Handling。此处的示例使用self.object.pk

访问主键

以下是我为其中一个项目所做的一个示例,但请注意,这是使用Django-Rest-Framework,因此我不确定这是否适合您。

<强> serializers.py

class JournalSerializer(serializers.ModelSerializer):

    class Meta:
        model = Journal
        exclude = ('id', 'user',)

    def get_date(self, obj):
        return obj.date.replace(microsecond=0)

答案 1 :(得分:0)

解决方案:

因此,在提交数据后立即从项目中提取数据的技巧是首先保存表单。

class EntryCreate(CreateView):
    form_class = EntryForm
    template_name = 'argent/entry_form.html'

    def form_valid(self, form):
        item = form.save()
        item_date = item.date
        e_month_d = item_date.strftime('%m')
        e_month = item_date.strftime('%B')
        e_year = item_date.year

保存表单后,表单中的数据可供操作。