django - 从 Viewset 调用时无法获取查询集的代表
问题描述
我正在尝试调用模型的查询集以添加到我的序列化程序中,objects.all()
但调试器说Unable to set repr for <class 'django.db.models.query.Queryset'>
这是我的观点
class TransactionReceiptViewSet(viewsets.GenericViewSet,
viewsets.mixins.RetrieveModelMixin,
viewsets.mixins.ListModelMixin):
authentication_classes = (TokenAuthentication,)
permission_classes = (IsAuthenticated,)
serializer_class = base_serializers.TransactionReceiptSerializer
queryset = models.TransactionReceipt.objects.all()
def get_queryset(self):
user = self.request.user
return models.TransactionReceipt.objects.filter(user_profile=user)
def retrieve(self, request, *args, **kwargs):
response = super(TransactionReceiptViewSet, self).retrieve(request, *args, **kwargs)
receipt = self.get_object()
serializer = self.get_serializer(receipt)
product_qs = models.ProductReceipt.objects.all()
products_data = base_serializers.ProductReceiptSerializer(
product_qs, many=True)
serializer.data['products'] = products_data
return Response(serializer.data)
这是我试图要求的模型
class ProductReceipt(models.Model):
id = models.AutoField(primary_key=True)
amount = models.IntegerField(default=1)
product = models.ForeignKey(Product, on_delete=models.DO_NOTHING, default=None)
created_date = models.DateTimeField('Date of purchase', auto_now=True)
transaction_receipt = models.ForeignKey(TransactionReceipt, on_delete=models.CASCADE)
price = models.IntegerField(default=0)
def __str__(self):
return "object created"
def __init__(self):
super().__init__()
self.product = Product()
self.transaction_receipt = TransactionReceipt()
def save(self, **kwargs):
self.amount = 1
self.created_date = datetime.now()
self.price = self.product.price_tag.price
当我调试 API 时,它说Unable to set repr for <class 'django.db.models.query.Queryset'>
在 product_qs 中并没有返回任何内容
编辑:
我认为模型必须对此做些什么。我试图ModelViewSet
为 ProductReceipt 创建一个并且效果很好。但是当我尝试手动进行查询时。它以某种方式破坏了到外键的映射???什么都不返回?
解决方案
原来产品字段未设置为 null=True。而且我有该字段的旧数据指向任何内容。尝试从数据库查询时,它会中断。简而言之,我没有正确迁移。
推荐阅读
- python-2.7 - elasticsearch-dsl 使用 from 和 size
- react-native - 如何在 React Native 中处理响应式布局
- syntax - 如何将.emacs连接到Emacs,通过brew安装
- python - 使用 % 进行循环解析
- bash - Bash脚本将文件夹及其子文件夹中的所有png文件移动到另一个目录?
- swift - Swift 4 上的谷歌地图
- java - JPA:防止级联父级保存
- hibernate - 延迟加载在 JPA 中无法使用休眠
- ansible - 带有角色的 Ansible 剧本的语法错误
- ansible - 如何在ansible中异步运行多个包含任务?