Python 如何在两个不同的模型中插入数据?
我是编码新手,我正在尝试我的第一个Django应用程序 这次我有三个不同的模型,但是在我点击Python 如何在两个不同的模型中插入数据?,python,django,django-models,Python,Django,Django Models,我是编码新手,我正在尝试我的第一个Django应用程序 这次我有三个不同的模型,但是在我点击Save的时候,有一个表单,我想保存该表单模型和其他两个模型的数据 所以在我的展示中,我想循环其他两个模型来展示我所拥有的 这可能吗 models.py class Personame(models.Model): name = models.CharField(max_length=128) def __str__(self): return self.name cla
Save
的时候,有一个表单
,我想保存该表单模型和其他两个模型的数据
所以在我的展示中,我想循环其他两个模型来展示我所拥有的
这可能吗
models.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
forms.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>
{%csrf\u令牌%}
{{form.as_p}}
名称
姓
{qs%中项目的%s}
{{item.name}
{{item.last_name}
{%endfor%}
基本上我想在Personinfo
和Personame
中保存name
,我想在Personinfo
和Personlastname
中保存last name
。所以我可以在模板中显示Personame
和Personlastname
有人能帮我吗
我将非常高兴你的帮助谢谢嗯,你的模型一点意义都没有。它们真的应该是一个模型。您尚未定义任何模型之间的任何关系。为此,您必须添加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
这使得您的生活更加简单,编码更加简单。您的模型没有类Meta,需要在类Meta中定义表名,如:
class Meta:
managed = True
db_table = 'tableName'
然后你需要覆盖personform中的save函数我需要3个不同的模型,一个用于表单,另一个用于在模板中显示。这就是为什么我想从一个表单中插入多个表。