Джанго Сингал Заполнение одной модели, если заполняется другая модель - PullRequest
1 голос
/ 10 июля 2019

У меня есть проект Django с двумя приложениями .. одно - contact, а другое - contactus

моя контактная модель: project/contact/models.py ниже:

from django.db import models

class ContactList(models.Model):
    phone = models.CharField(max_length=15)
    email = models.EmailField()

и моя модель контактуса: project/contactus/models.py ниже:

from django.db import models

class ContactUs(models.Model):
    subject = models.CharField(max_length=50)
    phone = models.CharField(max_length=15)
    email = models.EmailField()
    message = models.TextField()

Я хочу, чтобы класс ContactUs получал данные по пользовательскому вводу, в то же время, phone и email ContactUs должны быть заполнены в ContactList классе

Я создал два файла signal.py в двух своих приложениях, но попытался потерять с некоторым кодом, но не смог .. Я думаю, что это самая простая задача для эксперта. Может кто-нибудь помочь мне решить эту проблему?

1 Ответ

0 голосов
/ 10 июля 2019

Поскольку вы хотите что-то сделать, когда данные сохранены в ContactUs, вы должны использовать сигнал post_save, например:

@receiver(post_save, sender=ContactUs)
def add_to_list(sender, instance, created, **kwargs):
    if created:
        ContactList.objects.create(phone=instance.phone, email=instance.email

Этот сигнал создаст объект ContactList при создании объекта ContactUs и назначит значения phone и email экземпляра ContactUs для полей phone и email поля ContactList объект.

Более подробную информацию о сигналах Django можно найти в документах

.
...