python - Django REST 框架 - 使用日期外部 Views.py 文件过滤查询参数
问题描述
我使用 REST 框架创建了我的“API”,现在尝试对其进行过滤。这就是我的 models.py 寻找 BookingStatement 模型的方式。
class BookingStatement(BaseModel):
ticket_number = models.PositiveIntegerField(unique=True)
booking = models.OneToOneField(Booking, on_delete=models.PROTECT)
user_rate = AmountField()
agent_rate = AmountField()
total_amount = AmountField()
class Meta:
default_permissions = ()
def __str__(self):
return str(self.id)
预订是一对一键,因此预订模型具有以下属性。
class Booking(BaseModel):
bus_seat = models.ManyToManyField(Seat)
schedule = models.ForeignKey(Schedule, on_delete=models.PROTECT)
boarding_point = models.ForeignKey(
BoardingPoint,
on_delete=models.PROTECT,
null=True
)
remarks = models.JSONField(null=True, blank=True)
contact = PhoneNumberField(null=True)
booking_date_time = models.DateTimeField(auto_now_add=True)
class Meta:
default_permissions = ()
verbose_name = 'Booking'
verbose_name_plural = 'Bookings'
def __str__(self):
return '{}-{}'.format(self.user, self.customer_name)
我在 views.py 中使用了通用 ListAPIView,如下所示。
class BusCompanyTicketDetailView(generics.ListAPIView, BusCompanyMixin):
serializer_class = serializers.TicketDetailResponseSerializer
def get_queryset(self):
travel_date = (int(self.request.query_params.get('booking_date')))
print(booking_date)
return usecases.ListBusCompanyTicketUseCase(date=#'what should i pass?'#).execute()
我使用 usecases.py 过滤 booking_date_time 与 url 如下。
http://127.0.0.1:8000/api/v1/ticket/list?booking_date=2021-1-29
所以我过滤预订时间的用例文件如下。
class ListBusCompanyTicketUseCase(BaseUseCase):
def __init__(self, date:datetime):
self._date = datetime
def execute(self):
self._factory()
return self._booking_statements
def _factory(self):
self._booking_statements = BookingStatement.objects.filter(booking__booking_date_time=?? need to get date from views.)
问题是我不知道如何在我的用例中从 url 获取查询参数来过滤预订日期,任何帮助都会非常有帮助。
解决方案
推荐阅读
- android - android安全网nonce是否等同于web authnn的挑战?
- r - 如何在 R 的 ggplot2 中指定手动色标?
- javascript - 如何使用 tyscript 更改数组的格式
- windows - 应用程序关闭“err_proxy_connection_failed”
- html - 如何获取在Angular 8中动态生成的一组选择框中选择的值?
- google-cloud-platform - 从设备(谷歌云物联网核心)到 HTTP 云函数的 HTTP 请求?
- bash - 添加新用户时如何运行特定的 shell 脚本
- java - 如何在android studio中删除多个文件中的相似短语?
- javascript - 我不明白在这种情况下范围界定是如何工作的
- c# - 通过 C# 导入 Excel 文件时的性能瓶颈