【发布时间】:2021-03-17 01:25:16
【问题描述】:
我在 Django Rest Framework 中有一个模型和一些序列化程序。我想选择“service_interval”字段,然后根据他们选择的内容在数据库中正确生成日期。我该怎么做?
这是我的代码。
class Snippet(VIPSnippet):
title = models.CharField(max_length=100, blank=True, default='')
service_interval_choices = [
(3, '3 Months'),
(6 , '6 Months'),
(9, '9 Months'),
(12, '1 Year'),
]
service_interval = models.IntegerField(choices=service_interval_choices)
next_service = models.DateTimeField()
序列化器
class SnippetSerializer(serializers.HyperlinkedModelSerializer):
owner = serializers.ReadOnlyField(source='owner.username')
highlight = serializers.HyperlinkedIdentityField(view_name='snippet-highlight', format='html')
class Meta:
model = Snippet
fields = ['url', 'service_interval']
next_service = datetime.datetime.now() + datetime.timedelta(3*365/12)
当我这样做时,我得到以下错误
NOT NULL constraint failed: snippets_snippet.next_service
我计划用 service_interval 或我需要的任何变量替换 datetime.timedelta(3*365/12) 中的“3”,以便它生成日期,但可能会根据需要在未来几个月内生成。
【问题讨论】:
-
我认为你应该在字段中包含 next_service 然后定义 self.fields['next_service'] = ...
-
当我尝试这样做时,我得到了
TypeError: list indices must be integers or slices, not str。
标签: django django-models django-rest-framework django-serializer