Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取类型“的值?”;textinput";作为django';什么是模型?_Django_Django Models_Django Views_Django Forms_Modelform - Fatal编程技术网

如何获取类型“的值?”;textinput";作为django';什么是模型?

如何获取类型“的值?”;textinput";作为django';什么是模型?,django,django-models,django-views,django-forms,modelform,Django,Django Models,Django Views,Django Forms,Modelform,目标: 电路板上的数据有一个标签。要更新和保存标记,“forms.py”必须首先使用modelform获取数据 问题: 我试图使用“value\u from\u datadict”获取dict类型的数据。 modelform类无法访问它。 “打印消息”被放入“来自数据目录的值”中进行确认,但未显示 # forms.py class ManyToManyInput(forms.TextInput): def value_from_datadict(self, data, files, nam

目标: 电路板上的数据有一个标签。要更新和保存标记,“forms.py”必须首先使用modelform获取数据

问题: 我试图使用“value\u from\u datadict”获取dict类型的数据。 modelform类无法访问它。 “打印消息”被放入“来自数据目录的值”中进行确认,但未显示

# forms.py

class ManyToManyInput(forms.TextInput):
  def value_from_datadict(self, data, files, name):
    print("value_from_datadict inside")
    value = data.get(name)
    if value:
        return value.split(",")

class BoardUpdateForm(forms.ModelForm):
  class Meta:
    model = Board
    fields = ["title", "contents", "tags"]
    # fields = "__all__"
    labels = {
        "title": ("title"),
        "contents": ("contents"),
        "tags": ("tag"),
    }
    widgets = {
        "contents": forms.Textarea(attrs={"cols": 80, "rows": 20}),
        "tags": ManyToManyInput().value_from_datadict(),
    }
    help_texts = {}
    error_messages = {
        "title": {
            "required": ("Please enter the title."),
        },
        "contents": {
            "required": ("Please enter your content."),
        },
    }
为了使用更新表单,我使用“实例”选项发送数据,如以下源代码所示

# view.py

def board_update(request, pk):
  try:
    board = Board.objects.get(pk=pk)
  except Board.DoesNotExist:
    raise Http404("There are no board data")

  if request.method == "POST":
    form = BoardUpdateForm(request.POST)
    if form.is_valid():
        print("inside is_valid")

        user_id = request.session.get("user")
        usert = Usert.objects.get(pk=user_id)
        tags = form.cleaned_data["tags"].split(",")

        board.title = form.cleaned_data["title"]
        board.contents = form.cleaned_data["contents"]
        board.writer = usert
        board.save()
        print("board :", board)
        
        for tag in tags:
            if not tag:
                continue            
            _tag, _ = Tag.objects.get_or_create(name=tag)                
            board.tags.add(_tag)
            
        print("board.tags :", board.tags)
        return redirect("board_detail", pk=pk)

  form = BoardUpdateForm(instance=board)
  print("form : ", form)
  print("form['tags'].value() : ", form["tags"].value())
  return render(request, "board_update.html", {"form": form, "board": board})
我想知道

  • 如何访问“value\u from\u datadict”函数。 我在'widget.py'中研究了它,以了解来自\u datadict的值\u的用例。我做到了。 但它不起作用。 我真的很想知道是什么原因导致了我的错误,以及为什么它不起作用

  • 我想知道如果我可以用另一种方式使用forms.py中的多个case类型,该如何使用

  • 我可以用这个表格在“form.is\u valid”行中获得通行证吗