Django Singal 如果填充了另一个模型则填充一个模型

Django Singal Populating one model if another model is populated

我有一个包含两个应用程序的 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 class 通过用户输入获取数据时,同时 ContactUs 的 phoneemail 应该填充在 ContactList class

我在我的两个应用程序中创建了两个 signal.py 文件但是尝试使用一些代码丢失,我失败了..我认为这是专家最简单的任务..任何人都可以帮助我解决这个问题?

因为你想在数据保存在 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

此信号将在创建 ContactUs 对象时创建一个 ContactList 对象,并将 ContactUs 实例的 phoneemail 值分配给ContactList 对象的 phoneemail 字段。

有关 Django 信号的更多信息,请参见 docs