Django:创建表单以添加相关数据

时间:2019-06-05 10:17:39

标签: python django orm relationship

我很难理解Django中的ORM。 我有3个模型,其中2个首先用作FK。 我想创建允许我添加相关数据的按钮/表单。

我的 models.py

*imports*
class PersonManager(models.Manager):
    def get_by_natural_key(self,name,surname):
        return self.get(name=name,surname=surname)

class Person(models.Model):
    name = models.CharField(attributes)
    surname = models.CharField(attributes)
    objects = PersonManager()

class Phone(models.Model):
    person = models.ForeignKey(Person.editable=False,on_delete=models.CASCADE)
    phone = model.CharField(attributes)

class Email(models.Model):
    person = models.ForeignKey(Person,editable=False,on_delete=models.CASCADE)
    email - models.EmailField()

我有一个用于将人员添加到数据库的表格,现在我想在每个对象人员附近添加按钮,这将允许我填写电话和电子邮件,但是老实说,我不知道我可以以哪种方式进行连接他们在一起

编辑:

更加专一:

我的 views.py

*imports*
class PersonListView(ListView):
    model = Person
    template_name = 'app/home.html'
    context_object_name = 'users' //(in my home method it returns person from db)

现在,靠近我要添加的每个对象按钮,这将允许我填写电子邮件

我的 home.html

{% extends "app/base.html" %}
{% block content %}
{% for user in users %}
id {{ user.id }} name: {{ user.name}} surname: {{ user.surname}}
{% endfor %}
{% endblock content %}

1 个答案:

答案 0 :(得分:0)

我认为您可以使用相关名称来获取这样的关系字段:

class Email(models.Model):
person= models.OneToOneField(User,on_delete=models.CASCADE,related_name="E_person")
email - models.EmailField()

首先要在视图中保存此字段时,您可以通过人员类创建对象,如下所示:

obj = person.objects.create(name="mrX",surname="mrXIII")

并保存电子邮件:

obj.E_person.email = "mrX@gmail.com"
obj.save()

我可以为您提供帮助。