У меня есть две модели, organization
и vendor
, которые связаны между собой "реляционной" или "сквозной" таблицей, VendorOrganization
. В моей сквозной таблице есть поле description
, к которому я пытаюсь получить доступ, но не знаю. Как мне настроить мой просмотр, запрос и сериализатор, чтобы иметь возможность доступа к полям из сквозной таблицы? Спасибо за любую помощь!
// models.py
class Organization(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=20, unique=True, validators=[alphanumeric_plus_underscore, MinLengthValidator(4)])
vendors = models.ManyToManyField("thirdparty.Vendor", through="thirdparty.VendorOrganization")
class Vendor(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=60, blank=False, null=False)
class VendorOrganization(models.Model):
vendor = models.ForeignKey(Vendor, blank=False, null=False, on_delete=models.CASCADE)
organization = models.ForeignKey(Organization, blank=True, null=False, on_delete=models.DO_NOTHING)
created_at = models.DateTimeField(_('created at'), auto_now_add=True, null=True)
created_by_user = models.ForeignKey(User, blank=False, null=False, on_delete=models.DO_NOTHING)
description = models.CharField(max_length=300, blank=True, null=False)
// serializers.py (это не работает, чтобы получить поле 'description')
class VendorSerializer(serializers.ModelSerializer):
class Meta:
model = Vendor
fields = ('id', 'name', 'created_at', 'created_by_user', 'description')
extra_kwargs = {
'id': {'read_only': True},
'created_at': {'read_only': True},
}
// views.py
class VendorView(mixins.DestroyModelMixin, ListAPIView):
authentication_classes = (TokenAuthentication,)
def get(self, request):
pagination_class = None
current_org = Organization.objects.get(id=request.user.organization.id)
queryset = current_org.vendors.select_related()
vendors = VendorSerializer(queryset, many=True)
return Response(vendors.data)