python - Django,将值附加到外键列表
问题描述
我设置了以下模型结构:
class Prodotto(models.Model):
name = models.CharField('Nome del Prodotto', max_length=30)
class ProdottoFilter(models.Model):
prodotto=models.ForeignKey(Prodotto, on_delete=models.CASCADE, null=True)
之后,我使用 ProdottoFilter 模型创建了一个表单。这是我的views.py:
...
if request.method == 'POST':
form = ProdottoFilterForm(request.POST)
if form.is_valid():
prodotto = form.save()
else :
form = ProdottoFilterForm()
现在我想为变量附加一个值prodotto
,例如值“Tutti i prodotti”。
我努力了:
a="Tutti i prodotti"
prodotto.insert(0,a)
但是python给了我以下错误:
'ProdottoFilter' object has no attribute 'insert'
解决方案
我想补充其他答案。你也可以add
这样使用方法:
# In views.py - at if form.is_valid(): block.
prodotto_filter = form.save()
prodotto = Prodotto.objects.create(name='Tutti i prodotti')
prodotto.prodottofilter_set.add(prodotto)
也许这种方法更好地代表了“将值附加到外键列表”的想法。您可以在此处阅读有关该方法的更多信息https://docs.djangoproject.com/en/3.0/ref/models/relations/#django.db.models.fields.related.RelatedManager.add
您也可以通过以下方式更改默认prodottofilter_set
名称related_name
以这种方式在 ForeignKey 定义中设置参数:
# in models.py
class ProdottoFilter(models.Model):
prodotto=models.ForeignKey(Prodotto, on_delete=models.CASCADE, null=True, related_name='filters')
# In views.py - at if form.is_valid(): block.
prodotto_filter = form.save()
prodotto = Prodotto.objects.create(name='Tutti i prodotti')
prodotto.filters.add(prodotto)
推荐阅读
- javascript - React Native - 子组件中的功能组件引用
- react-native - 如何获取存储在谷歌云平台存储桶上的图像?
- git - 使用 heroku 和/或 github 跟踪文件
- python - 为什么从 PyInstaller for Centos 创建的单个可执行文件必须从可执行文件上方的一个文件夹运行,即“dist”文件夹
- kubernetes - Kubernetes client-go:watch.Interface vs. cache.NewInformer vs. cache.NewSharedIndexInformer?
- node.js - 如何在项目中设置参数 NODE_EXTRA_CA_CERTS 而不是脚本
- python - AttributeError:“DecisionTreeRegressor”对象没有属性“r2_score”
- mysql - 更改 mySQL 中的字符集时出错?
- python - 网页抓取而不会被阻止
- r - 重复循环并在 R 中添加列