Django: Создание формы для добавления связанных данных - PullRequest
0 голосов
/ 05 июня 2019

У меня есть проблема, чтобы понять 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()

У меня есть форма, которую я использую для добавления людей в базу данных, и теперь я хочу добавить кнопки рядом с каждым человеком объекта, которые позволят мне заполнить телефон и электронную почту, но, честно говоря, я понятия не имею, каким образом я могу подключиться их вместе

EDIT:

Чтобы быть более конкретным:

my 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)

Теперь рядом с каждым объектом я хочу добавить кнопку, которая позволит мне заполнить электронную почту

My 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 голосов
/ 05 июня 2019

Я думаю, вы можете использовать связанное имя для получения реляционного поля, например:

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

когда вы хотите сначала сохранить это поле в поле зрения, вы создаете объект из класса person следующим образом:

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

и для сохранения электронной почты:

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

Я могу тебе помочь.

...