Не удается получить доступ к пользовательским функциям модели после добавления значений в набор запросов в представлении - PullRequest
0 голосов
/ 08 января 2019

Я создал модель 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') в набор запросов.

1 Ответ

0 голосов
/ 08 января 2019

Не используйте values()! Это возвращает список dicts, а не набор запросов экземпляров. Просто верните набор запросов из вашего get_queryset метода.

...