gpt4 book ai didi

python - Django:如何访问帖子数据并与条件匹配

转载 作者:行者123 更新时间:2023-11-30 23:45:14 27 4
gpt4 key购买 nike

我需要一些有关以下内容的最佳实践实现的指导。

我有一个场景,我正在构建一个应用程序,但如果它与某个“类别”或“区域设置”匹配,并且想要将其重定向到其他页面之间的页面,则只需走正常路线即可。

这是我的简单 View .py

if form.is_valid():
...
kwargs = {'project_id':project_id, 'categories':request.POST['categories'], 'locale':request.POST['locale']}
process_se(request, **kwargs)
return HttpResponseRedirect(obj.next_url)

这是我的 models.py 文件中的内容,但它似乎非常不一致。有没有更好的方法来处理这个请求?

def process_se(self, request, **kwargs):
if "All" or "Sweden" in kwargs['locale']:
if "Technology" or "Internet" in kwargs['categories']:
next_url = request.build_absolute_uri(reverse('project_new_se', kwargs={'project_id': self.id}))
else:
next_url = request.build_absolute_uri(reverse('project_new_step2', kwargs={'project_id': self.id}))
self.next_url = next_url

更新:

我正在使用forms.ModelFormcategorieslocalesManyToManyField的我在shell中模拟了一个for,但似乎仍然没有得到结果

这是 clean_data 输出

f.cleaned_data
{'locale': [<Locale: Sweden>, <Locale: All>], 'categories': [<Category: Technology>, <Category: Internet>]}

尽管根据您的解决方案对表单中的字段运行此命令似乎渲染得非常好

最佳答案

我最初建议将此代码放在表单类中,但 ApPeL 修改了问题以指出 localecategories是模型上的多对多字段。所以现在我建议在您的模型中添加这样的方法:

def requires_swedish_setup(self):
"""
Return True if this project requires extra Swedish setup.
"""
return (self.locale.filter(name__in = ('All', 'Sweden')).exists())
and self.categories.filter(name__in = ('Technology', 'Internet')).exists())

然后像这样实现你的 View :

if form.is_valid():
project = form.save()
next = 'project_new_step2'
if project.requires_swedish_setup():
next = 'project_new_se'
next_url = reverse(next, kwargs={'project_id': project.id})
return HttpResponseRedirect(next_url)

一些注意事项:

  • 我假设 LocaleCategory对象有 name字段(如果没有,请使用包含您正在测试的名称的任何字段)。

  • request.POST 中读取表单数据不是一个好主意。 (小部件还没有机会运行,也没有经过验证):最好使用form.cleaned_data .

  • 您无需调用request.build_absolute_uri在这种情况下:可以提供 reverse 的结果直接联系HttpResponseRedirect .

  • "All" or "Sweden" in kwargs['locale']可能不是你的意思:它解析为 "All" or ("Sweden" in kwargs['locale'])这也是永远正确的。

关于python - Django:如何访问帖子数据并与条件匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9669671/

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