0
我使用python 2.7和django 1.8。在django的html中無法顯示產品評論的模型
我創建了一個產品評論模型,在我的電子商務網站中進行了評分。我的模型是正確的,但我無法理解如何在views.py中創建函數,以及如何爲html創建模板。
我已經添加了我的views.py功能,但我不知道該寫什麼模板。
models.py(未全部示出)
class Product(models.Model):
title = models.CharField(max_length=120)
description = models.TextField(blank=True, null=True)
price = models.DecimalField(decimal_places=2, max_digits=20)
active = models.BooleanField(default=True)
categories = models.ManyToManyField('Category', blank=True)
default = models.ForeignKey('Category', related_name='default_category', null=True, blank=True)
objects = ProductManager()
class Meta:
ordering = ["-title"]
def __unicode__(self): #def __str__(self):
return self.title
def get_absolute_url(self):
return reverse("product_detail", kwargs={"pk": self.pk})
def get_image_url(self):
img = self.productimage_set.first()
if img:
return img.image.url
return img #None
def average_rating(self):
all_rating = map(lambda x: x.rating, self.review_set.all())
return np.mean(all_rating)
class Review(models.Model):
RATING_CHOICES = (
(1, '1'),
(2,'2'),
(3,'3'),
(4,'4'),
(5,'5'),
)
product = models.ForeignKey(Product)
pub_date = models.DateTimeField('date published')
user_name = models.CharField(max_length=100)
comment = models.CharField(max_length=200)
rating = models.IntegerField(choices=RATING_CHOICES)
我views.py(未全部示出)
class ProductListView(FilterMixin, ListView):
model = Product
queryset = Product.objects.all()
filter_class = ProductFilter
def get_context_data(self, *args, **kwargs):
context = super(ProductListView, self).get_context_data(*args, **kwargs)
context["now"] = timezone.now()
context["query"] = self.request.GET.get("q") #None
context["filter_form"] = ProductFilterForm(data=self.request.GET or None)
return context
def get_queryset(self, *args, **kwargs):
qs = super(ProductListView, self).get_queryset(*args, **kwargs)
query = self.request.GET.get("q")
if query:
qs = self.model.objects.filter(
Q(title__icontains=query) |
Q(description__icontains=query)
)
try:
qs2 = self.model.objects.filter(
Q(price=query)
)
qs = (qs | qs2).distinct()
except:
pass
return qs
def review_list(request):
latest_review_list = Review.objects.order_by('-pub_date')[:9]
context = {'latest_review_list':latest_review_list}
return render(request, 'products/review_list.html', context)
def review_detail(request, review_id):
review = get_object_or_404(Review, pk=review_id)
return render(request, 'products/review_detail.html', {'review': review})