Как объединить два разных модала в django?

Я использую django 3.2. И БД postgres. Я застрял в проблеме, где я хочу объединить два модала.

У меня есть следующие две модальности

1- Профили

2- Рейтинги foreignKey(Profiles)

Теперь я хочу вернуть список профилей с их рейтингами. И это то, чего я не могу достичь. На самом деле я не знаю, как это сделать. Я думаю, это можно сделать с помощью внутреннего объединения по profile_id, но как это сделать с помощью django ?

profiles/views.py:

@api_view(['GET'])
@permission_classes([IsAuthenticated])
def profile_list(request):
    
    if request.method=="GET":
        kind = kind.lower()
    
        paginator = CustomPagination()
        paginator.page_size = 10

        print("dat da da da da ==>> ",request.data)
        coordinates = request.data["coordinates"]
        nearby_count = Profile.objects.nearby_count(coordinates)
        total_count = nearby_count
        total_page = total_page_counter(nearby_count)
        profiles_queryset = Profile.objects.nearby_ground_list(coordinates)
        ## Rating.objects ????
        page_data_of_profiles=None
        try:
            page_data_of_profiles = paginator.paginate_queryset(profiles_queryset, request)
        except:
            pass
        serializer = ProfileSerializer(page_data_of_profiles, many=True)
        return Response({"status":"success","message": "Ok","total_count":total_count,"total_page":total_page, "data": serializer.data},status=status.HTTP_200_OK)

ratings/modals.py

class Rating(models.Model):

    user = models.ForeignKey(User, verbose_name=_("user"), on_delete=models.CASCADE,null=True,blank=True)
    profile = models.ForeignKey(Profile, verbose_name=_("profile"), on_delete=models.CASCADE)
    stars = models.IntegerField(_("stars"),default=0)
    is_remove = models.BooleanField(_("is_remove"),default=False)
    create_time = models.DateTimeField(_("Create time"), default=timezone.now)

profiles/modals.py

# Create your models here.
class Profile(models.Model):

    owner = models.ForeignKey(User, verbose_name=_("Owner"), on_delete=models.CASCADE)
    name = models.CharField(_("Name"), max_length=150,null=True)
    location = geo_models.PointField(geography=True, default=Point(0.0, 0.0),null=True,blank=True)
    is_premium = models.BooleanField(_("premium"), default=False)
    is_remove = models.BooleanField(_("Remove"), default=False)
    create_time = models.DateTimeField(_("Create time"), default=timezone.now)
users_with_ratings = Rating.objects.all().values("user__name", "stars").distinct("user")
Вернуться на верх