我是Django的新手,我正在尝试通过用户登录来改变我的一个观点。例如,如果'test@example.com'已登录,那么Tview应该提供相关的数据到第一行的Test@example.com。目前它没有特定的顺序。
Current order: for a user signed as test@example.com
GEL_TEACT trea@example.com
TREAT_ACT test@example.com
I want to order this as:
Product OWNER
TREAT_ACT test@example.com
GEL_TEACT trea@example.com
我的观点:
class PListView(ListView):
model = Product
template_name = "app/product_list.html"
project_list_view = PListView.as_view()
我的模板:
<tbody>
{% for product in object_list %}
<tr>
<td><a href="{% url "product-detail" pro_id=project.pk %}">{{ product.title }}</a></td>
<td>
<a href="{% url "product-update" project_id=project.pk %}">
<i class="fi-pencil"></i>
</a>
</td>
</tr>
{% endfor %}
</tbody>
感谢您的时间。
答案 0 :(得分:0)
这些是三种不同的选择,具体取决于您的需求。只需使用其中一个。
在您的示例中,应首先显示已登录的用户。这只是放在列表前面的一个项目。所以最容易在模板中做到这一点
<ul>
<li>{{ user.username }}</a></li>
{% for item in users %}
{% if item != user %}
<li>{{ item.username }}</a></li>
{% endif %}
{% endfor %}
</ul>
但是,如果您想按特定顺序获取列表,有两种方法可以实现。如果订单仅适用于此ListView,请使用the get_queryset()
method of ListView()
class PListView(ListView):
model = Product
template_name = "app/product_list.html"
get_queryset(self):
return Product.objects.all().order_by('name')
但是,如果数据始终以这种方式订购,则在产品型号的所有列表中,您可以order it right on the model而不是
class Product(models.Model):
name = models.CharField(max_length=50)
class Meta:
ordering = ['name', ]