首页 > 解决方案 > Django模型结构使用另一个表中的键从外键表中获取数据

问题描述

我是 Django 新手,我找不到正确的答案来获取我的进度。我认为这是因为我的模型是错误的,所以我正在寻找错误的东西。

我正在尝试查找特定项目的所有进度状态。

我的解决方法是在 views.py 中解析 Progress 对象中的所有对象,如果 item_id 与 id 匹配,则将其添加到列表中并将列表发送到模板。但是我的进度列表很大,像 10000 和缩放,每个项目只有 4 到 5 个进度。所以我不知道每次单击项目 URL 时解析所有进度列表是否是个好主意

Models.py

class Item(models.Model):
    name = models.CharField(max_length=256)
    id =models.AutoField(primary_key=True)
    def __str__(self):
        return self.name


class Progress(models.Model):
    text=models.CharField(max_length=256)
    id=models.AutoField(primary_key=True)
    item_id=models.ForeignKey(Item,on_delete=models.CASCADE)
    start_date = models.DateField(default=django.utils.timezone.now)
    def __str__(self):
        return self.name

和意见

Views.py

def item(request,item):
    pp = Progress.objects.all()
    ip=get_object_or_404(Item,id=item)
    print(item)
    show=[]
    for each in pp:
        if each.item.id ==int(item):
            print(each.item.id)
            show.append(each)
    return render(request,'main/item.html',{'show':show,'ip':ip})

所需输出示例:

localhost/main/item/3

Item: Launch A
progress:
|- Initiated
|- fetched all the metadata
|- informed stakeholders
|- waiting for approval
localhost/main/item/9

Item: Automate Bots
progress:
|-Bot A scripted
|-Bot A ready for testing
|-Design proposal for bot B sent
|-Bot A failed edge cases

标签: pythondjangodjango-modelsdjango-viewsdjango-forms

解决方案


推荐阅读