gpt4 book ai didi

python - 在 Django 中使用一个模型过滤另一个模型

转载 作者:太空宇宙 更新时间:2023-11-03 18:24:30 24 4
gpt4 key购买 nike

我正在尝试根据 gadb_vote 模型中的 action_ids 访问 gadb_action 模型中的信息。我最初只是获取特定立法者的信息,然后尝试获取与立法者投票的行动相关的法案。

现在,我的action_list仅存储action_ids,而不存储我想在模板中使用的gadb_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 %}

最佳答案

你的模型坏了。

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

其次,正如 lalo 所说,您应该拥有从行动到法案、从投票到行动和投票到立法者的外键。这样您就可以通过单个查询获取相关信息,并按照模板中的要求使用外键。

(此外,Django 已在基础表名称中包含应用程序名称:无需在所有内容前添加“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 %}

关于python - 在 Django 中使用一个模型过滤另一个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23477871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com