Как подсчитать элементы в контекстном представлении и форме для всплывающих меню при тестировании - PullRequest
0 голосов
/ 11 февраля 2019

Я ограничиваю наборы запросов до request.user.Каждый пользователь должен видеть и работать только со своими данными.Как я могу подсчитать полученные элементы в контексте и в форме, чтобы проверить их по набору запросов ORM.

Я прочитал 2-дневную документацию и больше ничего не получил.

#models.py
from django.db import models
from django.urls import reverse 
from django.contrib.auth.models import User

class Order(models.Model):
    order_number = models.CharField(max_length=10)
    ordertext = models.TextField(max_length=1000, help_text='Description of Order')

    user = models.ForeignKey(User,on_delete =  models.CASCADE,related_name="Order")


class Delivery(models.Model):    
    order_number = models.ForeignKey(Order,on_delete = models.CASCADE,related_name="Delivery")
    delivery_number = models.CharField(max_length=10)
    summary = models.TextField(max_length=1000, help_text='Description of Delivery')

    user = models.ForeignKey(User,on_delete = models.CASCADE,related_name="Delivery")

#views.py
from booking.models import Delivery, Order
from django.views.generic.edit import CreateView
from django.urls import reverse_lazy
from django.contrib.auth.mixins import LoginRequiredMixin

class NewDelivery(LoginRequiredMixin, CreateView ):
    '''
    Limit Order in context and form to request.user
    '''
    model           = Delivery
    template_name   = 'book/Delivery/form.html'
    success_url     = reverse_lazy('delivery')

    def get(self, request, *args, **kwargs):
        super().get( request,*args, **kwargs)
        form_class = self.get_form_class()
        form = self.get_form(form_class)

        try :
            form.base_fields['order'].queryset = Order.objects.filter(user__in=[self.request.user,])
        except KeyError :
            pass

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['Title'] = 'New Delivery and assign Order'
        try :
            context['form'].fields['order'].queryset = Order.objects.filter(user__in=[self.request.user,])
        except KeyError :
            pass
        #
        return context

Чтобы проверить вид и форму, я хочу что-то вроде:

(get orders from Delivery context).count()
(get orders from Delivery form).count()

против.

Order.objects.filter(user=request.user).count()

Чтобы написать TestCase.

...