用一个模型过滤另一个模型

2024-09-27 21:27:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试根据gadb\u投票模型中的操作id访问gadb\u操作模型中的信息。我一开始只获取特定立法者的信息,然后试图获取与立法者投票的行动相关的法案。你知道吗

现在,我的action\u列表只存储action\u id,而不存储gadb\u action模型中我想在模板中使用的相关信息。你知道吗

在模板访问的for循环之外存储信息的最佳方法是什么?有没有办法写入一个空的查询集?你知道吗

谢谢你的帮助!你知道吗

查看

def each_member(request,legislator_id):
    each_member = get_object_or_404(gadb_legislator, legislator_id=legislator_id)
    each_vote = gadb_vote.objects.filter(legislator_id=legislator_id)
    action_list = []

    for i in each_vote:
        action = gadb_action.objects.filter(action_id=i.action_id)
        action_list.append(action)

    context = {
        'each_member': each_member,
        'each_vote': each_vote,
        'action_list': action_list
    }

    return render(request, "eachmember.html", context)

模型

class gadb_action(models.Model):
    action_id = models.IntegerField(unique=False, max_length=4, primary_key=True)
    bill_id = models.IntegerField(unique=False, max_length=12)

class gadb_vote(models.Model):
    vote_id = models.IntegerField(unique=False, max_length=11,primary_key=True)
    legislator_id = models.IntegerField(unique=False, max_length=11)
    action_id = models.IntegerField(unique=False, max_length=11)

模板

{% for i in action_list %}
    {{i.bill_id}}
    {{i.action_id}}
{% endfor %}

Tags: 模型信息idfalsemodelsactionlengthmax
1条回答
网友
1楼 · 发布于 2024-09-27 21:27:28

你的模型坏了。你知道吗

首先,尽管主键与问题没有直接关系,但您需要将主键定义为自动字段,以便在每次添加新实体时自动递增。否则,保存新行时会出现各种错误。(更好的是,根本不定义PK,让Django自动添加它。)

第二,正如拉洛所说,从行动到法案,从投票到行动,从投票到立法者,你们都应该有外国人。这样,您就可以通过一个查询获得相关信息,并按照模板中的要求遵循外键。你知道吗

(而且,Django已经在基础表名中包含了app名称:不需要在所有内容前面加上“gadb”。)

class Action(models.Model):
    bill = models.ForeignKey(Bill)

class Vote(models.Model):
    legislator = models.ForeignKey(Legislator)
    action = models.ForeignKey(Action)

查看:

def each_member(request,legislator_id):
    actions = Action.objects.filter(vote__legislator_id=legislator_id)
    return render(request, "eachmember.html", {'action_list': actions})

模板:

{% for action in actions %}
    {{ action.bill.name }}
    {{ action.someotherfield }}
{% endfor %}

相关问题 更多 >

    热门问题