首页 > 解决方案 > 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'

标签: pythonpython-3.xdjangodjango-modelsdjango-views

解决方案


我想补充其他答案。你也可以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)

推荐阅读