Как опубликовать данные из одной модели и получить их в другую модель того же приложения с помощью платформы отдыха DjanPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как опубликовать данные из одной модели и получить их в другую модель того же приложения с помощью платформы отдыха Djan

Сообщение Anonymous »

У меня есть две модели, которые связаны отношением «один ко многим». Я хочу использовать первую модель под названием BedNightReturn для публикации данных и другую, называемую BedNightReturnAssessment, для расчета публикации данных и получения данных. Мои модели следующие:-

Код: Выделить всё

class BedNightReturn(models.Model):
room_type = models.CharField(max_length=50)
number_of_rooms = models.PositiveSmallIntegerField()
price_per_night = models.DecimalField(max_digits=10, decimal_places=2)
days_in_month = models.PositiveSmallIntegerField()

class Meta:
verbose_name = 'BedNightReturn'
verbose_name_plural = 'BedNightReturns'

def __str__(self):
return f'{self.room_type}'

class BedNightReturnAssessment(models.Model):
assessment = models.ForeignKey(BedNightReturn, related_name = "assessments", on_delete=models.CASCADE)

class Meta:
verbose_name = 'BedNightReturnAssessment'
verbose_name_plural = 'BedNightReturnAssessments'

def __str__(self):
return f'{self.assessment.room_type}'

@property
def potential_turnover(self) -> float:
days_in_month = 30
return float(days_in_month) * float(self.assessment.number_of_rooms) * float(self.assessment.price_per_night)

@property
def actual_turnover(self) -> float:
return float(self.assessment.days_in_month) * float(self.assessment.number_of_rooms) * float(self.assessment.price_per_night)
И сериализаторы следующие: -

Код: Выделить всё

class BedNightReturnSerializer(ModelSerializer):
class Meta:
model = BedNightReturn
fields = (
'id',
'room_type',
'number_of_rooms',
'price_per_night',
'days_in_month',

)

class BedNightReturnAssessmentSerializer(ModelSerializer):
assessment = BedNightReturnSerializer()
potential_turnover = ReadOnlyField()
actual_turnover = ReadOnlyField()
class Meta:
model = BedNightReturnAssessment
fields = (
'id',
'assessment',
'potential_turnover',
'actual_turnover',
)
И просмотры:-

Код: Выделить всё

class BedNightReturnViewSet(ModelViewSet):
queryset = BedNightReturn.objects.all()
serializer_class = BedNightReturnSerializer

class BedNightReturnAssessmentViewSet(ModelViewSet):
queryset = BedNightReturnAssessment.objects.all()
serializer_class = BedNightReturnAssessmentSerializer
И URL-адреса: -

Код: Выделить всё

from django.urls import include, path
from rest_framework import routers

from bednightlevy.views import (
BedNightReturnAssessmentViewSet,
BedNightReturnViewSet,
)

router = routers.DefaultRouter(trailing_slash = False)

router.register('returns', BedNightReturnViewSet, basename="bednight")
router.register('assessments', BedNightReturnAssessmentViewSet, basename='bednight_assessment')

urlpatterns = [
path('',include(router.urls)),
]
Идея состоит в том, чтобы использовать конечную точку /returns для публикации данных и конечную точку /assessments для получения данных (только чтение).
Идея состоит в том, чтобы использовать конечную точку /returns для публикации данных и конечную точку /assessments для получения данных (только для чтения).
п>

Подробнее здесь: https://stackoverflow.com/questions/758 ... ame-app-us
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»