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

2024-06-25 22:37:04 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这一次我有三个不同的模型,但是当我点击Save的时候,只有一个form我想保存这个表单模型和其他两个模型的数据。你知道吗

所以在我的展示中,我想循环其他两个模型来展示我所拥有的。你知道吗

这有可能吗?你知道吗

你知道吗型号.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"]

你知道吗视图.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)

你知道吗索引.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保存在PersoninfoPersoname,我想把last_name保存在PersoninfoPersonlastname。所以我可以在模板中显示PersonamePersonlastname。你知道吗

有人能帮我吗?你知道吗

我会很高兴你的帮助。。。谢谢


Tags: name模型selfformreturnmodelsdeflength
2条回答

您的模型没有类Meta,需要在类Meta中定义表名,如:

class Meta: 
   managed = True
   db_table = 'tableName'

然后您需要覆盖personform中的save函数

你的模型一点意义都没有。他们真的应该是一个模型。您尚未定义任何模型之间的任何关系。为此,必须添加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

这使得你的生活更加简单的编码。你知道吗

相关问题 更多 >