У меня есть следующие модели, которые представляют статью, автора и компанию (где автор работает):
class Article(models.Model):
article_title = models.CharField(max_length=250)
article_url = models.URLField(max_length=250)
article_pub_date = models.DateField()
class Company(models.Model):
company_name = models.CharField(max_length=250)
class Author(models.Model):
author_sf_id = models.CharField(max_length=20, unique=True)
author_name = models.CharField(max_length=250)
article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='author')
company = models.ForeignKey(Company, on_delete=models.CASCADE, related_name='author')
Мои сериализаторы:
class ArticleSerializer(serializers.ModelSerializer):
class Meta:
model = Article
fields = ('__all__')
depth = 2
class CompanySerializer(serializers.ModelSerializer):
class Meta:
model= Company
fields = ('__all__')
class AuthorSerializer(serializers.ModelSerializer):
article = ArticleSerializer()
class Meta:
model = Author
fields = ('__all__')`
Мои просмотры:
class ArticleList(ListAPIView):
queryset = Article.objects.all()
serializer_class = ArticleSerializer
class AuthorList(ListAPIView):
queryset = Author.objects.all().order_by('author_name')
serializer_class = AuthorSerializer
class CompanyList(ListAPIView):
queryset = Company.objects.all().order_by('company_name')
serializer_class = CompanySerializer
В DRF я хочу получить все статьи Автора и его членов Компании с URL-адресом, который будет принимать article_url
, например: /api/v1/{article_url}
. Я пробовал различные комбинации, но пока мне удалось только получить все статьи от автора. Идея, о которой я подумал, заключается в переопределении get_object
метода ListAPIView
таким образом, чтобы помочь получить эти поля.
У кого-нибудь есть идея?