Как объединить два разных модала в 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")