我正在尝试从当前项目中提取日期字段。我似乎无法正确使用语法。我如何从我刚刚提交的表单中获取日期数据?每当我尝试下面的代码时,我都会收到以下错误:
'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)
提前感谢您的帮助。
答案 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
保存表单后,表单中的数据可供操作。