素材牛VIP会员
如何实现植物的科属索引?
 ze***an  分类:Python  人气:822  回帖:1  发布于6年前 收藏

如题,本菜鸟要做一个植物志网站,想要实现一个科属索引功能。有模型如下:

class Family(models.Model):
    name = models.CharField(max_length=100, verbose_name="名称")
    slug = models.SlugField(max_length=100)
    description = models.TextField(verbose_name="描述")
    created = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")

    class Meta:
        ordering = ['name']

    def __str__(self):
        return self.name


class Category(models.Model):
    family = models.ForeignKey(Family, related_name='categories', verbose_name="所属科")
    name = models.CharField(max_length=100, verbose_name="名称")
    slug = models.SlugField(max_length=100)
    description = models.TextField(verbose_name="描述")
    created = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")

    class Meta:
        ordering = ['name']
        
    def __str__(self):
        return self.name


class Plant(models.Model):
    category = models.ForeignKey(Category, related_name='plants', verbose_name="所属属")
    name = models.CharField(max_length=200, verbose_name="名称")
    alias = models.CharField(max_length=200, verbose_name="别名")
    latin_name = models.CharField(max_length=200, verbose_name="拉丁名")
    body = models.TextField(verbose_name="描述")
    slug = models.SlugField(max_length=200)
    created = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
    updated = models.DateTimeField(auto_now=True, verbose_name="更新时间")

    class Meta:
        ordering = ['name']

    def __str__(self):
        return self.name
        

需求大致描述如下:

  1. 首先在页面上显示所有的科名
  2. 点击某个科名时,出现该科名下所有的属名
  3. 点击某个属名时,出现该属名下所有的植物

类似于这样的页面(截图自山东农业大学校园植物志):

请问该如何定义views 以及 模板?(大致思路?)

若有哪位前辈有良好的建议,不胜感激!

 标签:djangohtmlpython

讨论这个帖子(1)垃圾回帖将一律封号处理……

Lv1 新人
he***21 UI设计师 6年前#1

这个简单啊。就一个列表页搞定。详情页就不说了。

@app.route('/')
def index():
    family = request.args.get('family', 'all')
    category = request.args.get('category', 'all')
    query = dict()
    if family != 'all':
        query['family'] = family
    if category != 'all':
        query['category'] = category
    plants = Plant.query.filter_by(**query)
    # 分页等其他的支持就不说了。
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取