Я создаю полнофункциональное веб-приложение, используя Django, Django Rest framework и Vue. js в качестве внешнего интерфейса. Я работаю с моделью Post, у которой есть столбец автора, который связан с моделью Django User по внешнему ключу, например:
class Post(models.Model):
title = models.CharField(max_length=50, unique=True)
body = models.TextField()
author = models.ForeignKey(User, on_delete=models.CASCADE)
Я настроил сериализаторы, наборы просмотра и URL-адреса вот так; serializers.py
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ['username', 'email']
class PostSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Post
fields = ['url', 'title', 'body', 'author']
В моем vews.py;
class UserViewSets(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
class PostViewSets(viewsets.ModelViewSet):
queryset = Post.objects.all()
serializer_class = PostSerializer
В моем urls.py;
router = routers.DefaultRouter()
router.register('users', UserViewSets)
router.register('posts', PostViewSets)
urlpatterns = [
path('admin/', admin.site.urls),
path('', include(router.urls)),
path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
Я могу получить доступ к моей модели Post на оставьте консоль фреймворка в моем браузере. Теперь в моем компоненте Vuejs я также могу получить список своих сообщений, если я сделаю запрос к конечной точке post api, т.е. http://localhost:8000/posts
. Однако я также хочу получить связанную модель, то есть пользователя (автора отдельного сообщения), в качестве объекта, чтобы я мог сделать что-то вроде post.author.username
или post.author.email
в моем компоненте Vuejs, но я получаю URL пользователя http://127.0.0.1:8000/users/1/
. Как я могу этого добиться?