python - 如何在两个不同的模型中插入数据?

标签 python django django-models

我是编码新手,正在尝试我的第一个 Django 应用程序。

这次我有三个不同的模型,但是当我点击保存时只有一个表单,我想保存该表单模型和其他表单模型上的数据2 个型号。

因此,在我的显示器中,我想循环其他两个模型以显示我所拥有的内容。

这可能吗?

模型.py

class Personame(models.Model):
    name = models.CharField(max_length=128)
    def __str__(self):
        return self.name

class Personlastname(models.Model):
    last_name = models.CharField(max_length=128)
    def __str__(self):
        return self.last_name


class Personinfo(models.Model):
    personame = models.CharField(max_length=128)
    personlastname = models.CharField(max_length=128)
    address = models.TextField()
    phone_number = models.CharField(max_length=128)
    hobbies =models.CharField(max_length=128)

    def __str__(self):
        return self.personame

表单.py:

class personform(forms.ModelForm):
    personame = forms.CharField(label = "Name")
    personlastname = forms.CharField(label = "Last Name")
    class Meta:
        model = Personinfo
        fields = ["personame","personlastname","address","phone_number","hobbies"]

views.py:

def index(request):
    queryset = Personame.objects.all()
    queryset2 = Personlastname.objects.all()
    qs = chain(queryset,queryset2)
    form = personform(request.POST or None)
    context = {
    "qs": qs,
    "form":form,
    }
    if form.is_valid():
        instance = form.save()
    return render(request, "index.html", context)

index.html:

<form method="POST" action="">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Save!" />
</form>

            <table >
             <tr>
                <th>Name</th>
                <th>Last Name</th>

            </tr>
            {% for item in qs  %}
            <tr> 
                <td>{{ item.name }}</td>
                <td>{{ item.last_name }}</td> 
            </tr>
            {% endfor %}
            </table>

基本上我想将name保存在PersoninfoPersonname中,并且我想将last_name保存在PersoninfoPersonlastname。所以我可以在模板中显示 PersonnamePersonlastname

有人可以帮我吗?

我将非常高兴您的帮助...谢谢

最佳答案

那么你的模型根本没有任何意义。他们确实应该是一个模型。您尚未定义任何模型之间的任何关系。为此,您必须添加 OneToOneField 或foreignKey。这实际上意味着您为每项数据都有一个额外的列。完全多余。

class Personinfo(models.Model):
    name = models.CharField(max_length=128)
    last_name = models.CharField(max_length=128)
    address = models.TextField()
    phone_number = models.CharField(max_length=128)
    hobbies =models.CharField(max_length=128)

    def __str__(self):
        return self.personame

通过更简单的编码,您的生活变得更加轻松。

关于python - 如何在两个不同的模型中插入数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41711727/

相关文章:

python - 训练期间未在检查点中导出用于预处理的 TF hub 模块变量

python - 在 Jupyter Notebook 中嵌入幻灯片

python - 如何在 Django 查询集过滤中执行不等于?

django - 从 Django 中的现有数据库生成一些模型

Django 查询使用 and 子句

python - 如何从每个数组中取出一个元素来形成一个唯一的集合?

python - Django Rest Framework-在POST上创建外键对象

python - 使用腻子在远程机器上运行 Django 开发服务器。如何运行开发服务器?

Django + uWSGI + nginx url 映射

javascript - Bootstrap 标签输入发送带空格的 POST