因此,我想在Django详细视图上循环显示产品。详细信息视图用于特定的卡车,它将把分配给它的所有产品运到城市。因此,视图中的所有产品都分配给了这辆卡车。
问题是,每个产品也都分配给特定客户。所以我希望视图看起来像
卡车1详细视图
客户1
客户2
作为一个基本示例。现实生活中的示例可能有20-30个产品和5-6个客户。
当然,我可以按某种顺序进行排序,但是我希望循环使用这些命令,以便在有新客户(类似于上述格式)时就可以开始新的格式设置,以便于简化查看要装载这辆卡车的员工。
这可能吗?因为这让我有些困惑。
编辑:
我的相关模型看起来像;
class Truck(models.Model):
date = models.DateField()
class Agent(models.Model):
name = models.CharField(max_length=255)
class Product(models.Model):
name = models.CharField(max_length=255)
truck = models.ForeignKey(Truck, on_delete=models.DO_NOTHING)
agent = models.ForeignKey(Agent, on_delete=models.DO_NOTHING)
status = models.IntegerField()
代理商=客户。值得一提的是,每种产品都是为每个客户专门制造的,并且只有一个实例。将每个实例通过卡车发送给客户后,它将收到更新的“状态”,并且不再分类为库存。
答案 0 :(得分:0)
作为查询集,我们可以过滤某个int max_2d(const int size[], int array[][size]) {
if (array == NULL) return -1;
int max = array[0][0];
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if (max < array[i][j]) max = array[i][j];
}
}
return max;
}
int main() {
int array[2][2] = { {1,2},{0,-3} };
printf("%d\n", max_2d(2, array));
return 0;
}
上的Product
,然后可以使用itertools.groupby
[Python-doc]对每个Truck
进行分组。请注意,您在此处显示的是一个 list (以及一个集合),因此在此处使用ListView
[Django-doc]更有意义。
Agent
其中from app.models import Product
from django.views.generic.list import ListView
from itertools import groupby
from operator import attrgetter
class ProductCustomerListView(ListView):
model = Product
def get_queryset(self):
return Product.objects.filter(
truck_id=self.kwargs['truck_id']
).prefetch_related('agent').order_by('agent_id')
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
context['grouped'] = groupby(context['object_list'], attrgetter('agent'))
return context
是一个URL参数,用于指定truck_id
的ID,我们要为其显示按Truck
分组的元素。
然后,在模板中,“展开” Agent
:
groupby