I followed suggestion from this question でDjangoのモデルのフィールド名の値を変更することが、私は別のオブジェクトの提出日にquery_setの一つのフィールドに名前を付ける必要があるDRF外部キー
私のモデルは
class Choice(models.Model):
question = models.ForeignKey(Question, related_name='choice', on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
def __str__(self):
return self.choice_text
class ChoiceWithTime(models.Model):
choiceTime = models.ForeignKey(Choice,related_name='choiceTime', on_delete=models.CASCADE)
choice_date=models.DateField()
マイビュー
ですclass QuestionChoicesViewSet(viewsets.ModelViewSet):
queryset = Choice.objects.all()
serializer_class = ChoiceDateSerializer
def get_queryset(self):
return Choice.objects.values('choiceTime__choice_date','choice_text').annotate(
total_votes=Count('choiceTime__choice_date'),
)
投稿日時をカウントする必要があります。
私は、シリアライザは、クエリのフィールドを認識していることをchoiceTime__choice_dateに名前を付ける方法がわからない
class ChoiceDateSerializer(serializers.ModelSerializer):
choiceTime__choice_date = serializers.DateTimeField()
total_votes = serializers.IntegerField()
class Meta:
model = Choice
fields = ('id', 'choice_text','total_votes','choiceTime__choice_date')
を設定し、私は
{
"choice_text": "ant tower",
"total_votes": 3,
"choiceTime__choice_date": "2017-04-20"
}
を受け取るしかし、私は
{
"choice_text": "ant tower",
"total_votes": 3,
"choice_date": "2017-04-20"
}
が異なるみました受け取るしたいですオプションは成功しません。間違いなく私はポイントを逃しています。 私の目的のために働いていますが、私はよく書かれたAPIを持っていたいと思います。
2オプション変更時刻提出モデル?
class ChoiceWithTime(models.Model):
choiceTime = models.ForeignKey(Choice,related_name='choiceTime', on_delete=models.CASCADE)
choice_date=models.DateField()
coutner = models.IntegerField(default=0)
Is 2オプションは、私の特定の問題のより良いアプローチと考えていますか?ありがとう!
モデルパッケージ機能を使用してシリアライザ変化値に渡す前に示唆されました。 –