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")}
が '' TaskSerializer'でtag'フィールドは、READ_ONLY =は 'true'としてマークされているので、それはどのように動作するはず? – Matthew
それは問題ではありません。このタイプを変更すると、「キーワード 'タスク'をフィールドに解決できません」というエラーが表示されます。 –
貼り付けられたコードとエラーメッセージを修正してください。 fields =( 'id'、 'name'、 '')は意味をなさない。あなたが取得したエラーは貼り付けたコードと一致せず、タグモデルでタグリレーションを使用することも意味する。 – Linovia