Python 3.6.1过滤多个对象和输入

时间:2017-04-21 20:57:50

标签: python django python-3.x object filter

我是Python的新手,我试图从我的模型类中过滤掉一些对象。 我已成功向系统添加了新订单,现在我想向workers发送通知service order与所请求的online_status相关。示例:CustomerA在Y地址的日期X发送电工的请求。在我的服务'团队我有Josh和Cris是机械师,Arnold和David是电工。我想首先过滤哪个工作人员覆盖该服务(产生Arnold和David),然后我想过滤他们的class Service(models.Model): #electrician, mechanic, etc name = models.CharField(max_length=500) short_description = models.CharField(max_length=500) image = models.ImageField(upload_to='service_image/', blank=False) price = models.IntegerField(default=0) def __str__(self): return self.name class Worker(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='worker') avatar = models.CharField(max_length=500) phone = models.CharField(max_length=500, blank=True) address = models.CharField(max_length=500, blank=True) service = models.ForeignKey(Service, blank=True, null=True) online_status = models.BooleanField(default=1) # 1=online OR 0=offline def __str__(self): return self.user.get_full_name() class Order(models.Model): REQUESTED = 1 ACCEPTED = 2 DENIED = 3 CANCELED = 4 COMPLETED = 5 STATUS_CHOICES = ( (REQUESTED, "Requested"), (ACCEPTED, "Accepted"), (DENIED, "Denied"), (CANCELED, "Canceled"), (COMPLETED, "Completed"), ) customer = models.ForeignKey(Customer) worker = models.ForeignKey(Worker, blank=True, null=True) address = models.CharField(max_length=500) total = models.IntegerField() status = models.IntegerField(choices = STATUS_CHOICES) created_at = models.DateTimeField(default = timezone.now) shot_issue_description = models.CharField(max_length=500) service_date = models.DateTimeField() def __str__(self): return str(self.id) class OrderDetails(models.Model): order = models.ForeignKey(Order, related_name='order_details') service = models.ForeignKey(Service) sub_total = models.IntegerField() def __str__(self): return str(self.id) 。这是我到目前为止所得到的:

models.py

customer

以下是order制作def customer_add_order(request): """ INPUT FROM CUSTOMER: access_token service_date address shot_issue_description order_details (json format), example: {"service_id" : 1} >> Electrician """ if request.method == "POST": # Get user token access_token = AccessToken.objects.get(token = request.POST.get("access_token")) #, expires__gt = timezone.now()) # Get customer customer = access_token.user.customer # Check address if not request.POST["address"]: return JsonResponse({"status": "failed", "error": "Address is required."}) # Check whether customer has any order that is not delivered # !!!!!!!!! check also if objects complete are the same service!!!!!!!!! if Order.objects.filter(customer = customer).exclude(status = Order.COMPLETED) or Order.objects.filter(customer = customer).exclude(status = Order.CANCELED): return JsonResponse({"status": "failed", "error": "Your last service is not completed or canceled yet."}) # Get Order Details order_details = json.loads(request.POST["order_details"]) shot_issue_description = request.POST["shot_issue_description"] order_total = Service.objects.get(id = order_details["service_id"]).price #____________Filter starts # filter workers by online_status # ??? # filter workers by service type # ??? #____________Filter ends if len(order_details) > 0: # Step 1 - Create Order order = Order.objects.create( customer = customer, address = request.POST["address"], service_date = request.POST["service_date"], total = order_total, shot_issue_description = shot_issue_description, status = Order.REQUESTED ) # Step 2 - Create Order OrderDetails.objects.create( order = order, service_id = order_details["service_id"], sub_total = Service.objects.get(id = order_details["service_id"]).price ) return JsonResponse({"status": "success"})

的功能
    $end = Carbon::createFromFormat('Y-m-d H:i:s', $this->end_time);
    $date = Carbon::createFromDate($end->year, $end->month, $end->day, 'Europe/Warsaw');

    if($date->diffInDays() == 0){
        // It's today.
        return true;
    }

目前我在不过滤工人的情况下向系统添加订单。这个想法是只有在有服务的工人和他在线时才添加订单。我感谢所有的帮助!

0 个答案:

没有答案