gpt4 book ai didi

python - 我无法通过我的 View 保存对象。多值字典键错误

转载 作者:行者123 更新时间:2023-12-01 06:31:58 25 4
gpt4 key购买 nike

我正在尝试使用表单中的数据保存对象“动物”,但出现错误。

这是我的观点:

def addAnimal(request):
if request.user.id == None:
return render(request, "deny.html")
else:
if request.method == 'POST':
animal_name = request.POST['animal_name']
animal_type = request.POST['animal_type']
animal_age = request.POST['animal_age']
animal_port = request.POST['animal_port']
animal = Animal(animal_name=animal_name, animal_age=animal_type, animal_type=animal_age, animal_port=animal_port)
animal.save()
return render(request, "home.html", args)

这是我试图保存的模型:

class Animal(models.Model):
animal_name = models.CharField(max_length=255)
animal_age = models.ManyToManyField(Age)
animal_type = models.ManyToManyField(Type)
animal_port = models.ManyToManyField(Port)
def __str__(self):
return self.animal_name

这是我的表格:

<form method="post" class="form-signin" action="{% url 'addAnimal' %}">
{% csrf_token %}
<img class="mb-4" src="{% static 'images/logo_transparent.png' %}" alt="" width="300" height="300">
<h1 class="h3 mb-3 font-weight-normal text-white">Adicione o seu Animal de Estimação</h1>

<input type="text" id="animal_name" name="animal_name" class="form-control"
placeholder="Nome do Seu Animal de Estimação">

<select class="form-control" id="animal_type" name="ration_type">
<option value="Cão">Cão</option>
<option value="Gato">Gato</option>
</select>
<select class="form-control" id="animal_age" name="animal_age">
<option value="Junior">Junior</option>
<option value="Adulto">Adulto</option>
<option value="Senior">Senior</option>
</select>
<select class="form-control" id="animal_port" name="animal_port">
<option value="Pequeno">Pequeno</option>
<option value="Médio">Médio</option>
<option value="Grande">Grande</option>
</select>
<div> &nbsp</div>
<button class="btn btn-lg btn-primary btn-block" type="submit">Adicionar</button>
</form>

如果您需要的话,还可以打印: Print of the Form

更新我收到一个新错误:

TypeError at /addAnimal/
Direct assignment to the forward side of a many-to-many set is prohibited. Use animal_age.set() instead.

如何解决?

最佳答案

这是因为您的 POST 请求。

尝试使用request.POST.get()。和/或当您从 POST 获取属性时,请尝试输入例如 request.POST['animal name', None]request.POST.get('animal name', None) 其中 None 可以替换为任何默认值。我认为这是一个空检查问题。

关于python - 我无法通过我的 View 保存对象。多值字典键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59864091/

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