我正在使用django rest framework。
我有两个模型(Model1和Model2)。他们每个人都有:
他们非常相似 第一个工作正常:我可以使用Model1CreateView创建Model1的istance,我可以使用Model1DetailView查看(GET)和补丁。 第二个不起作用:我可以使用Model2CreateView创建Model1的istance,我可以使用Model2DetailView看到(GET)。但是我无法更新信息。没有错误消息,也没有应用更新。
我已经尝试了一切。我从头开始在数据库中编写了一个新的模型,序列化程序,视图和表格,它仍然无法正常工作 我甚至减少了字段,只是在Model2中保留了一个Charfield字段,只是为了查看字段是否是导致问题的原因。
型号1
class Model1(models.Model):
Field1 = models.CharField(max_length=255)
Field2 = models.CharField(unique=True, max_length=10, blank=True, null=True)
Field3 = models.SmallIntegerField()
description = models.CharField(max_length=3000, blank=True, null=True)
Field4 = models.SmallIntegerField()
Field5 = models.ForeignKey('Foreignkey1', models.DO_NOTHING, db_column='Column1')
class Meta:
managed = False
db_table = 'table1'
class Model1DetailView(RetrieveUpdateAPIView):
serializer_class = Model2DetailSerializer
lookup_field = 'id'
lookup_url_kwarg = 'model1_id'
#permission_classes = (IsAuthenticated,)
def get_queryset(self):
return Model1.objects.all()
class Model1CreateView(CreateAPIView):
serializer_class = Model1CreateSerializer
def get_queryset(self):
return Model1.objects.all()
class Model1CreateSerializer(serializers.ModelSerializer):
class Meta:
model = Model1
fields = ('field1', 'field2', 'field3', 'field4', 'field5')
class Model1DetailSerializer(serializers.ModelSerializer):
class Meta:
model = Model1
fields = ('field1', 'field2', 'field3', 'field4', 'field5')
read_only_fields = ('field2')
模型2
class Model2(models.Model):
field1 = models.CharField(max_length=255, blank = True)
field2 = models.SmallIntegerField()
field3 = models.CharField(max_length=3000, blank=True, null=True)
class Meta:
managed = False
db_table = 'table2'
class Model2DetailView(RetrieveUpdateAPIView):
serializer_class = Model2DetailSerializer
lookup_field = 'id'
lookup_url_kwarg = 'model2_id'
def get_queryset(self):
return Model2.objects.all()
class Model2CreateView(CreateAPIView):
serializer_class = Model2CreateSerializer
def get_queryset(self):
return Model2.objects.all()
class Model2DetailView(RetrieveUpdateAPIView):
serializer_class = Model2DetailSerializer
lookup_field = 'id'
lookup_url_kwarg = 'model2_id'
def get_queryset(self):
return Model2.objects.all()
class Model2CreateView(CreateAPIView):
serializer_class = Model2CreateSerializer
def get_queryset(self):
return Model2.objects.all()
提前谢谢。
答案 0 :(得分:0)
你能分享你的Model2DetailSerializer吗? 你的网址是对的吗?你可以在" get_queryset"中打印控制台输出吗?检查您是否实际使用具有正确URL的视图的方法?
此外,使用Django Rest Framework,您需要使用PUT / Patch请求而不是POST请求。