我有两个模型,形成一对多的关系。一个托盘具有多个与其关联的图像。你知道吗
class Pallet(models.Model):
pallet_id = models.IntegerField(primary_key=True)
def __str__(self):
return str(self.pallet_id)
class Meta:
ordering = ('pallet_id',)
class Image(models.Model):
created = models.DateTimeField(auto_now_add=True)
pallet = models.ForeignKey(Pallet, on_delete=models.CASCADE)
image = models.FileField(upload_to="")
def __str__(self):
return str(self.created)
我正在尝试创建一个视图,在该视图中,我可以从url中获取与特定托盘id相关联的所有图像。你知道吗
class ImageSerializer(serializers.HyperlinkedModelSerializer):
pallet = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
class Meta:
model = Image
fields = '__all__'
class PalletSerializer(serializers.ModelSerializer):
class Meta:
model = Pallet
fields = '__all__'
urlpatterns = [
url(r'^pallets/', include([
url(r'^(?P<pk>[0-9]+)/$', views.PalletDetail.as_view(), name='pallet-detail'),
])),
]
我认为问题出在视图.py使用PalletDetail类。我对如何基于URL中的主键编写视图感到困惑。我尝试过使用**kwargs['pk'],但是使用它会使它成为基于函数的视图吗?如果是这样,混合使用基于类和基于函数的视图会是一种不好的形式吗?如何从基于类的视图中获得类似的行为?你知道吗
我真的很纠结于这里的观点:
class PalletDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Image.objects.prefetch_related('pallet').all()
serializer_class = ImageSerializer
你试过filter\u by()方法吗
在基于函数的视图中 pass pk参数 示例:
基于类的视图 获取url参数
您以错误的方式使用序列化程序和视图。你知道吗
您的
PalletDetail
视图的问题是使用了错误的查询集。queryset应该返回Pallet
对象,因为查找将在该queryset上(默认的查找字段是'pk')。此外,您还需要使用Pallet
的序列化程序,因为它应该处理Pallet
对象的数据。你知道吗相关问题 更多 >
编程相关推荐