Django:合并表单和数据库中的文本

时间:2015-12-24 16:00:38

标签: python django postgresql

我目前正在使用一个Django项目。

我有字典:

来自models.py

class teltab(models.Model):
    code=models.CharField(max_length=255)
    telescope=models.CharField(max_length=255)
    comment=models.TextField(blank=True) 

和一个向数据添加数据的表单:

class newtelescopesform(forms.ModelForm):
    class Meta:
        model=teltab

现在我需要做以下事情:

  • 从数据库中获取文本(Сomment1)(我正在运行Postgresql),
  • 从表单中获取文本(Сomment2),
  • 合并数据(Сomment1+Сomment2),
  • 最后将结果写入数据库。

即我的表格看起来像这样

Fig1

我希望得到这个

Fig2

所以我的代码来自views.py:

  if len(request.GET['comment'])>0:
     commentq=request.GET['comment'] # I expect that it will take the text from form
     p=tel_list.get('comment', "") # I expect that it will take the text from database 
     commentp = p + "\n" + commentq # and it should merge the text
     tel_list.update(comment=commentq)
     for item in tel_list: 
         item.save()

但它给了我一条错误消息:“太多值无法解压”

我的问题是我做错了什么?错误的原因是什么?

请教我优雅的解决方案。

(抱歉长篇文章,我显然不知道自己在做什么)。

1 个答案:

答案 0 :(得分:0)

使用单独的Comment模型并与原始模型形成外键关系几乎肯定会更好。

class Teltab(models.Model): # it’s good python coding style to capitalize classnames
  code = models.CharField(max_length=255)
  telescope = models.CharField(max_length=255)

class Comment(models.Model):
  text = models.TextField(required=True)
  teltab = models.ForeignKey(Teltab)

然后您可以获得原始模型的所有评论,例如 -

my_teltab = Teltab.objects.first()
my_teltab.comment_set.all()