我同意 Silwestpl 的观点,即你的模型是错误的,因为使用外键会使这个查询变得更容易。但只是回答你的问题。我假设您没有提到任何两个表之间的任何关系。
x = Cabinet_mapping.objects.filter(product_id = somevalue).distinct('cabinet_id')
response_list = []
for y in x:
    response_dict = {}
    response_dict['cabinet_id'] = y.cabinet_id
    response_dict['cabinet_name'] = cabinet.objects.get(id = y.cabinet_id).cabinet_name
    response_dict['size'] = y.size
    response_list.append(response_dict)
return response_list
根据您提供的详细信息,这将是答案。
但理想情况下,我会做这样的事情
class Product(models.Model):
   # id is generated automatically.
   ## any other fields that you want for product.
class Cabinet(models.Model):
   # again id is auto-genearated.
   cabinet_name = models.CharField(max_length=100)
   cabinet_size = models.IntegerField()
   products = models.ManytoManyField(Product)#This automatically maps product_id n cabinet_id.
你的查询将是。
x = Cabinet.objects.filter(product.id=some_value)
print (x.id , x.cabinet_name, x.cabinet_size) # I used print, but you can use it anyway you want.
这将是您所需要的。如果您正在寻找严重的问题,请使用第二种解决方案。