我有一个在不同组织类型下完整的组织列表。我有一个表,其中包含名称,电话等...然后另一个表具有固定到组织类型的ID。然后是一个包含多对多关系的表,因为组织可以有许多不同的组织类型。
我想要做的是按字母顺序列出属于每种组织类型的所有俱乐部。
我不确定是否需要在views.py
中完成,或者是否应该在我的模板文件中完成。
以下是我的模特:
class ClubType(models.Model):
name = models.CharField(max_length = 250)
def __unicode__(self):
return self.name
class Club(models.Model):
name = models.CharField(max_length = 250,
verbose_name = "Club or Organization Name",
)
created_date = models.DateTimeField(
auto_now_add = True,
)
updated_date = models.DateTimeField(
auto_now = True,
auto_now_add = True,
)
club_type = models.ManyToManyField(ClubType)
username = models.CharField(max_length = 100,
blank = True, null = True
)
contact_name = models.CharField(max_length = 250,
blank = True, null = True,
)
phone_number = models.CharField(max_length = 250,
blank = True, null = True,
)
def __unicode__(self):
return self.name
class Meta:
ordering = ('name', )
我是python和Django的菜鸟,所以任何帮助都会非常感激。
谢谢
答案 0 :(得分:4)
基本上您需要执行以下步骤:
有很多方法可以实现这一点,我不建议将这个逻辑放入模板中,因为在视图中表达其背后的逻辑可能更容易(或者如果你得到custom Manager在你的Django生活后期冒险)
示例(警告:未经测试的代码):
# step 1
club_types = ClubTypes.objects.distinct()
# step 2 & #3
club_sets = []
for current_club_type in club_types:
cset = Clubs.objects.filter(club_type__id=current_club_type.pk).order_by('name')
club_sets.append((current_club_type, cset))
最后剩下的是俱乐部类型列表列表,每个列表按名称排序:
[(clubtype1,[club1,club2,...]),(clubtype2,[club2,club8,...]),...]