Я создал модель Product и добавил пользовательский def get_status_class для управления css-классами для значков в соответствии со статусом, и он работает, если я использую all () в наборе запросов, но после использования .values () с некоторым конкретным полем. Это не работает.
Model.py
class Product(models.Model):
PRODUCT_STATUS = (
('Planning','Planning'),
('In Progress','In Progress'),
('Final','Final'),
)
status = models.CharField(max_length=20,choices=PRODUCT_STATUS)
def get_absolute_url(self):
return reverse('products:product_detail',kwargs={'pk':self.pk})
def get_status_class(self):
status_class = ""
if self.status == "Planning":
status_class = "primary"
elif self.status == "In Progress":
status_class = "secondary"
elif self.status == "Final":
status_class = "success"
return status_class
def __str__(self):
return self.title
View.Py
class ProductListView(LoginRequiredMixin,ListView):
model = Product
def get_queryset(self):
queryset = Product.objects.all().order_by(self.order_by)
return queryset.values('status')
Template.py
<span class="badge badge-pill badge-{{product.get_status_class}}">{{ product.status }}</span>
product.get_status_class не работает, если я добавляю .values ('status') в набор запросов.