gpt4 book ai didi

python - Django 过滤结果

转载 作者:行者123 更新时间:2023-12-01 04:57:38 24 4
gpt4 key购买 nike

我对如何执行任务有点困惑,所以想知道是否有人可以提供帮助。

我有这个模型和模型形式:

class Prefabrication(models.Model):
prefabrication_id = models.AutoField(primary_key=True)
matlist = models.ForeignKey(MatList, blank=True, null=True)
sizelist = models.ForeignKey(SizeList, blank=True, null=True)
quantity = models.IntegerField(blank=True, null=True)
workpack = models.ForeignKey(Workpack, blank=True, null=True)
code = models.CharField(max_length=50)
lineclass = models.ForeignKey(Lineclass, blank=True, null=True)


class CreateNewPrefabForm(forms.ModelForm):
class Meta:
model = Prefabrication
fields = ('prefabrication_id', 'matlist', 'sizelist',
'quantity', 'workpack', 'lineclass')

这代表我用来收集用户信息的表单。

我正在尝试根据 matlist 和 sizelist 从查找表中获取特定值用户给出的值。

我尝试过使用这个:

if request.method == 'POST':
if createprefabcons['newprefab'].is_valid():
item = Lineclass.objects.filter(itemname__icontains=createprefabcons['newprefab'].cleaned_data['matlist'],
dn1__icontains=createprefabcons['newprefab'].cleaned_data['sizelist'],
lineclassname__icontains=createprefabcons['newprefab'].cleaned_data['matlist'])
createprefabcons['newprefab'].cleaned_data['code'] = item
createprefabcons['newprefab'].save()
return HttpResponseRedirect('/')

使用过滤器来尝试获取过滤返回的项目的代码。据我所知那里应该只是从过滤器搜索返回的一项,并且该项将具有我希望在用户提供搜索详细信息后添加的代码。

一切都很好地保存到数据库中,但代码字段是空白的,所以要么我做错了什么,要么没有匹配的值,如果过滤正确,它们必须匹配。谁能给点建议。

非常感谢。

最佳答案

filter() 返回 QuerySet()这是类似列表并且充满了模型对象。因此,即使只有一个结果,您也可能需要将其从返回的列表中取出。

item = Lineclass.objects.filter()[0]

您最好使用 .get()如果您预计只有一个条目,这也会检查您的假设,因为如果返回多个条目,它将引发异常。也许是这样的:

try:
item = Lineclass.objects.get(itemname__icontains=createprefabcons['newprefab'].cleaned_data['matlist'], dn1__icontains=createprefabcons['newprefab'].cleaned_data['sizelist'], lineclassname__icontains=createprefabcons['newprefab'].cleaned_data['matlist'])
except Lineclass.DoesNotExist:
# handle case where no items are found
do_stuff()
createprefabcons['newprefab'].cleaned_data['code'] = item

关于python - Django 过滤结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27011143/

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