我是编码的新手,我正在尝试我的第一个Django应用程序。
这一次我有三个不同的模型,但是当我点击form
时,我想要保存单个Save
我希望在该表单模型和其他2个模型中保存数据。
所以在我的显示器中,我想循环其他两个模型以显示我的内容。
这甚至可能吗?
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>
基本上我想在name
和Personinfo
中保存Personame
,我想在last_name
和Personinfo
中保存Personlastname
。因此,我可以在模板中显示Personame
和Personlastname
。
有人可以帮我吗?
我很乐意为您提供帮助...... 谢谢
答案 0 :(得分:2)
你的模特根本没有任何意义。他们真的应该是一个模特。你还没有定义任何模型之间的任何关系。为此,您必须添加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
这使得您的生活变得更加简单,编码更简单。
答案 1 :(得分:0)
你的模型没有类Meta,需要在类meta中定义表名,如:
class Meta:
managed = True
db_table = 'tableName'
然后你需要在 personform
中覆盖保存功能