我正在使用退出多个数据库的应用程序(我无法修改它们)。我连接到所有这些对象,并且可以毫无问题地执行查询和序列化程序,但是我想将一个模型中的字段填充到另一个具有相同值的模型中:
class Cuisines(models.Model):
name = models.CharField(max_length=255)
company_id = models.PositiveIntegerField()
...
class Meta:
managed = False
db_table = 'cuisines'
in_db = 'db_2'
class Companies(models.Model):
company_name = models.CharField(max_length=255)
location = models.CharField(max_length=255, blank=True, null=True)
....
class Meta:
managed = False
db_table = 'cuisines'
in_db = 'db_1'
...
视图:
def cuisines(request):
companies = Companies.objects.all()
for company in companies:
result = Cuisines.objects.filter(company_id = company.id )
serializer = OrderSerializer(result, many=True)
return JSONResponse(serializer.data)
结果如下:
[{"id":1,"name":"Burger",company_id:"1" ...]
我正在寻找:
[{"id":1,"name":"Burger","company_id":"some name", }...]
更新: 序列化器
class OrderSerializer(serializers.ModelSerializer):
class Meta:
model = Cuisines
fields = ('id','name','company_id')
答案 0 :(得分:0)
我需要在最新的项目中执行此操作,并且创建了一个字典,在其中放置了要返回的值。因此,在您的情况下:
result = []
for i in Cusiness.objects.all():
d = {}
company = Companies.objects.get(id = i.company_id)
d["name"] = i.name
d["company_id"] = company.name
...
result.append(d)
答案 1 :(得分:0)
首先,您需要在视图中连接实例
def cuisines(request):
companies = Companies.objects.all()
for company in companies:
result = list(Cuisines.objects.filter(company_id=company.id))
for o in result:
setattr(o, 'company', company)
serializer = OrderSerializer(result, many=True)
return JSONResponse(serializer.data)
序列化器
class OrderSerializer(serializers.ModelSerializer):
#eg. custom company_name field
company_name = serializers.CharField(read_only=True, source='company.company_name')
class Meta:
model = Cuisines
fields = ('id','name','company_name')