2017-05-08 11 views
0

オブジェクト "Task"に多対多の関係が付けられたオブジェクト "Tag"を作成する必要があります。なぜこのコードを持っているのか理解できません仕事はありません。エラーが表示されますキーワード 'タスク'をフィールドに解決できません。選択肢は、ID、名前、タグ、 P.S.です。 が、私はこの記事に頼っmanyToMany with django rest frameworkDjango-rest-framework多対多の関係を持つオブジェクトを作成する

.models

class Tag(models.Model): 
    name = models.CharField(max_length=200) 
    def __str__(self): 
     return "{}".format(self.name) 

class Task(models.Model): 
    name = models.CharField(max_length=200, blank=True) 
    tags = models.ManyToManyField(Tag) 
    def __str__(self): 
     return "{}".format(self.name) 

.views

class TagCreateView(generics.ListCreateAPIView): 
    serializer_class = TagSerializer 

    def get_queryset(self): 
     queryset = Tag.objects.all() 
     task_id = self.kwargs.get('task_id', None) 
     if task_id is not None: 
      queryset = queryset.filter(task=task_id) 
     return queryset 
    def perform_create(self, serializer): 
     task_id = self.kwargs.get('task_id', None) 
     try: 
      tasks = Task.objects.get(task__id__exact=task_id) 
     except Task.DoesNotExist: 
      raise NotFound() 
     serializer.save(tag=tasks) 

.serielizers

class TagSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Tag 
     fields = ('id', 'name','') 

class TaskSerializer(serializers.ModelSerializer): 
    tag = TagSerializer(many=True, read_only=True) 
    class Meta: 
     model = Task 
     fields = ('id', 'name', 'tags') 
     read_only_fields = ('tags') 

.urls

urlpatterns = { 
url(r'^todolists/(?P<task_id>[0-9]+)/tags', TagCreateView.as_view(), name="tags")} 
+0

が '' TaskSerializer'でtag'フィールドは、READ_ONLY =は 'true'としてマークされているので、それはどのように動作するはず? – Matthew

+0

それは問題ではありません。このタイプを変更すると、「キーワード 'タスク'をフィールドに解決できません」というエラーが表示されます。 –

+0

貼り付けられたコードとエラーメッセージを修正してください。 fields =( 'id'、 'name'、 '')は意味をなさない。あなたが取得したエラーは貼り付けたコードと一致せず、タグモデルでタグリレーションを使用することも意味する。 – Linovia

答えて

関連する問題