django - 如何从 Django 中具有多字段的 HTML 表单将数据发布到数据库?
问题描述
我的表单由两个具有一些值的输入字段组成,现在我希望将这些值发布到具有 manytomanyfield 的数据库中。我的表格是
<div class="card-body">
<form action="{% url 'car:user_register' %}" method="POST" >
{% csrf_token %}
<div class="form-group" >
<input type="text" name="goal" id="goal" value="">
</div>
<div class="form-group" >
<input type="text" name="goale" id="goal2" value="">
</div>
<input type="submit" value="Register" class="btn btn-secondary btn-block">
</form>
</div>
我的models.py是
class users(models.Model):
email=models.CharField(max_length=50,default='0000000')
password=models.CharField(max_length=50,default='0000000')
room = models.ForeignKey(rooms,on_delete=models.CASCADE)
goal = models.ManyToManyField(goals)
电子邮件密码和房间值正在保存,但我想将这两个值存储在目标字段中,即 manytomanyfield 我的views.py
def user_register(request):
if request.method == 'POST':
username=request.POST["username"]
email = request.POST['email']
password = request.POST['password']
room = request.POST['room']
g = goal=request.POST['goal']
g1 = goal=request.POST['goale']
user = users(password=password,email=email)
user.room=rooms.objects.get(pk=room)
user.goal=goals.objects.get(pk=g)
user.goal =goals.objects.get(pk=g1)
user.save()
user.goal.add(g,g1)
user.save()
我的views.py有什么问题吗?它没有存储,请问如何将数据从表单存储到manytomanyfield
解决方案
问题是您使用的是从发布请求中获得的两个字符串,而不是实际目标对象来添加到用户模型。对于多对多字段,您应该首先创建您的对象(用户),然后您可以将对象添加到 m2m 字段(在您的案例目标中)试试这个:
...
g =request.POST['goal']
g = g.split(',')
user = users(password=password,email=email)
user.room=rooms.objects.get(pk=room)
goals = goals.objects.filter(pk__in=g)
user.save()
user.goal.add(*goals)
推荐阅读
- python - Python - 来自 Dataframe 的 Seaborn “Dodged” Barch 图
- python - Python:按时间和空间分组
- python - to_dict('records') 导致不支持的类型:
错误 - node.js - multer req.file 在上传时返回 undefined
- scala - 如何正确使用Scala类型Either或Option
- r - 检查连续 0 的数量并根据它们的计数替换它们
- xpath - xquery/xpath 比较除特定节点之外的所有节点
- reactjs - 将 MUI 主题应用于创建的 DOM 节点
- javascript - 将评论动态预填充到聊天框中
- javascript - Fabric.js 将图像混合到背景中。边缘模糊