首页 > 解决方案 > 如何从 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

标签: djangodjango-modelsdjango-views

解决方案


问题是您使用的是从发布请求中获得的两个字符串,而不是实际目标对象来添加到用户模型。对于多对多字段,您应该首先创建您的对象(用户),然后您可以将对象添加到 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)

推荐阅读