在Django Rest框架中,如果需要关联两个无外键的Django模型,并使用PostgreSQL数据库,可以通过使用PostgreSQL的ArrayField来实现。
以下是一种实现方法:
from django.db import models
class ModelA(models.Model):
name = models.CharField(max_length=100)
# 其他字段...
class ModelB(models.Model):
name = models.CharField(max_length=100)
# 其他字段...
from django.contrib.postgres.fields import ArrayField
class ModelA(models.Model):
name = models.CharField(max_length=100)
model_b_ids = ArrayField(models.IntegerField(), blank=True, default=list)
# 其他字段...
from rest_framework import serializers
from .models import ModelA, ModelB
class ModelBSerializer(serializers.ModelSerializer):
class Meta:
model = ModelB
fields = '__all__'
class ModelASerializer(serializers.ModelSerializer):
model_bs = ModelBSerializer(many=True, read_only=True)
class Meta:
model = ModelA
fields = '__all__'
from rest_framework import viewsets
from .models import ModelA, ModelB
from .serializers import ModelASerializer, ModelBSerializer
class ModelAViewSet(viewsets.ModelViewSet):
queryset = ModelA.objects.all()
serializer_class = ModelASerializer
class ModelBViewSet(viewsets.ModelViewSet):
queryset = ModelB.objects.all()
serializer_class = ModelBSerializer
from django.urls import include, path
from rest_framework import routers
from .views import ModelAViewSet, ModelBViewSet
router = routers.DefaultRouter()
router.register(r'modela', ModelAViewSet)
router.register(r'modelb', ModelBViewSet)
urlpatterns = [
path('', include(router.urls)),
]
现在,你可以使用Django Rest框架中的API来创建、更新、删除和获取ModelA和ModelB的数据,并通过ArrayField字段实现两个模型的关联。
注意:以上代码示例中,并未涉及到具体的腾讯云产品和链接地址,因为在这个问题中要求不提及特定的云计算品牌商。如果需要在腾讯云上部署Django应用程序,你可以考虑使用腾讯云的云服务器、云数据库PostgreSQL版等产品。具体的产品介绍和链接地址可以参考腾讯云官方文档。
领取专属 10元无门槛券
手把手带您无忧上云