現在、Django RestFrameworkを使用して、GETとPOSTの両方を使用してDjangoアプリケーション内のデータを取得/挿入するAPIを作成しています。私は現在、DateTimeFieldを取るstart_dt(下記参照)というフィールドを持つTransactionDateTimeというデータベースモデルを持っています。難しいのは、jsonのPOSTデータ構造体(下を参照)に文字列を渡していることです。JSON構造体をループして適切なdatetime構造体に変換するには、createメソッドをオーバーライドする必要があります。私はDjangoシェル(以下を参照)でそれを実行することができたので、文字列をdatetimeに変換するために使用されるロジックを知っていますが、createメソッドをオーバーライドし、createこれを実現させる方法。手伝ってください。以下は、成功したPOSTDjango RestFrameworkからPOSTデータへのcreateメソッドのオーバーライド
で使用するmodels.pyclass TransactionDateTime(models.Model):
room = models.ForeignKey(Room, on_delete = models.CASCADE)
start_dt = models.DateTimeField('start_dateTime')
end_dt = models.DateTimeField('end_dateTime', blank=True, null=True)
def __str__(self):
return str(self.start_dt)
データ構造からメソッドを作成
TransactionDateTimeモデル内のBIG質問で、GET経由でJSONデータ構造を返している私の見解のコピーであります
[
{
"start_dt": "2015-01-28 03:00:00"
},
{
"start_dt": "2015-01-28 05:30:00"
}
]
ロジックは、日時
from datetime import datetime
my_date = datetime.strptime('2015-01-28 05:30:00', '%Y-%m-%d %H:%M:%S')
に文字列を変換しますジャンゴMIXINと表示
class DateTimeMixin(object):
serializer_class = SimpleSerializer4
permission_classes = (permissions.IsAuthenticated,)
class DateTimeViewSet(DateTimeMixin, generics.BulkModelViewSet):
def get_queryset(self):
num = self.kwargs['dt_rm']
num2 = self.kwargs['id']
r1 = Room.objects.get(id = num)
s1 = Schedule.objects.get(pk=num2)
u= self.request.user.pk
usr = User.objects.get(pk=u)
if(s1.user.username == usr.username):
queryset = r1.transactiondatetime_set.all()
return queryset
else: raise Http404("User does not exist")
def get_serializer_context(self):
num = self.kwargs['id']
s1 = Schedule.objects.get(pk=num)
var = s1.user.username
context = super(DateTimeViewSet, self).get_serializer_context()
return {'request' : var}
def created(self, request, *args, **kwargs):
???
here is the link to the source on GitHub、物事はrest_framework自体に行われる方法を見て、それはしばしば非常に役に立ちましたあなたのものを含めるように['DATETIME_INPUT_FORMATS'](http://www.django-rest-framework.org/api-guide/settings/#date-and-time-formatting)を変更しようとしましたか? – twil