2017-03-02 22 views
1

APIエンドポイントにDjango REST汎用ビューを使用しています。私のシリアライザのフィールドの1つにManyToMany関係があります。そのフィールドをAPIエンドポイントに表示したいのですが、このエラーが発生しますLists are not currently supported in HTML input.何ができますか?リストは現在HTML入力ではサポートされていません

class AlertCreateView(ListCreateAPIView): 
    permission_classes = (IsAuthenticated,) 
    pagination_class = None 
    serializer_class = AlertSerializer 

    def get_queryset(self): 
     queues = Queue.objects.all() 
     for queue in queues: 
      queryset = Alert.objects.filter(
       queue=queue 
      ) 

     return queryset 

私のシリアライザはこれです:

class AlertSerializer(serializers.ModelSerializer): 
    queue = QueueSerializer(many=True) 

    class Meta: 
     model = Alert 
     fields = (
      'id', 'name', 'queue','email', 'expected_qos' 
     ) 

答えて

1

は、あなたがこのような何かを行うことができget_queryset方法を必要としません。 QueueSerializerはレンダリングするPrimaryKeyRelatedFieldから継承できます。本当に奇妙な何

#models.py 
class AlertModel(models.Model): 
    ... 
    queues = models.ManyToManyField(Queue, ... related_name='queues')  
    ... 

#serializer.py 
class QueueSerializer(PrimaryKeyRelatedField, serializers.ModelSerializer): 
    class Meta: 
     model: Queue 

class AlertSerializer(serializers.ModelSerializer): 
    queues = QueueSerializer(many=True, queryset=Queue.objects.all()) 

    class Meta: 
     model = Alert 
     fields = (
     'id', 'name', 'queues','email', 'expected_qos' 
     ) 
+1

うん、私は...ネストされたシリアライザとHTMLビューで作業リストを持っていた私のDBとpooofを再建していることです。私も同じことをしました。ありがとうございました! –

+0

ありがとう、これは私のトリックでした!ただし、これを追加した後、キューのリストビューを取得できなくなりました。 '' '__init __()は1つの位置引数をとりますが、2つは' 'を与えられ、PrimaryKeyrelatedField引数を削除するとこのエラーは発生しません。何か案は? –

1

私は何ができますか?

HTMLフォームは、現時点ではネストされたシリアライザをサポートしていないのであまりありません。

シリアライザでネストされていないリレーショナルフィールドを使用すると、これを処理したり、通常のJSONを使用することができます。それはモデルのrelated_nameに書かれているのと同じ方法で、シリアライザで

#views.py 
class AlertCreateView(ListCreateAPIView): 
    queryset = Alert.objects.all() 
    serializer_class = AlertSerializer 
    permission_classes = (IsAuthenticated,) 

queuesフィールド:

+0

は...彼らは姿を消した... –

関連する問題