Я ограничиваю наборы запросов до 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.