【发布时间】:2022-02-07 20:40:23
【问题描述】:
我有一个 Order 模型的数据表,其中包含来自 User 模型的一些字段,并使用以下序列化程序实现
serializers.py
# customer order detail serializer
class CustomerOrderSerializer(serializers.ModelSerializer):
first_name = serializers.ReadOnlyField(source='user.first_name')
last_name = serializers.ReadOnlyField(source='user.last_name')
def __init__(self, *args, **kwargs):
remove_fields = kwargs.pop('remove_fields', None)
super(CustomerOrderSerializer, self).__init__(*args, **kwargs)
if remove_fields:
for field_name in remove_fields:
self.fields.pop(field_name)
class Meta:
model = Order
fields = ['id', 'amount', 'order_status', 'created', 'first_name', 'last_name']
read_only_fields = ['issue_date', 'first_name', 'last_name']
在 views.py
中class OrderList(generics.ListAPIView):
queryset = Order.objects.order_by('-created')
serializer_class = CustomerOrderSerializer
我成功地获得了first_name 和last_name 字段,如图所示
但是,我的要求是在数据表中过滤/搜索来自不同模型User的字段first_name和last_name
当我尝试过滤这些字段时,我得到以下错误:
Cannot resolve keyword 'first_name' into field. Choices are: ..., .., ..., ..
谁能帮我理解,我们如何过滤 django-rest 数据表中的外键字段
【问题讨论】:
标签: python django django-models django-rest-framework datatables