【问题标题】:How to post data to database from HTML form having manytomany Field in django?如何从 Django 中具有多字段的 HTML 表单将数据发布到数据库?
【发布时间】:2019-12-16 04:20:05
【问题描述】:

我的表单由两个具有一些值的输入字段组成,现在我希望将这些值发布到具有 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 我的意见.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

【问题讨论】:

    标签: django django-models django-views


    【解决方案1】:

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

    【讨论】:

    • 很高兴为您提供帮助。另外最好添加尝试,除非没有任何对象或输入不正确我强烈建议您使用表单
    • 你确定@mahyar
    • 嘿@mahyar,如果我在表单值中有 1,2,我可以一次将这 1 和 2 发布到视图中的字段
    • 是否可以@mahyar 在同一个表单字段中使用逗号我们可以将数据发布到数据库
    • 是的,您可以获取值并使用 values.split(',') 从那里获取字符串列表,按这些字符串过滤目标对象并添加到您的 m2m 字段
    猜你喜欢
    • 2016-10-22
    • 1970-01-01
    • 2020-03-20
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    相关资源
    最近更新 更多