Django models 在django中加入两个模型

Django models 在django中加入两个模型,django-models,django-rest-framework,django-views,Django Models,Django Rest Framework,Django Views,我有两种型号,都有一个唯一的钥匙:电子邮件。对于这两种模型,字段EMAIL是唯一的,但是模型A的一些EMAIL不一定存在于模型B中。我想执行内部联接,但由于我对Django非常陌生,我不知道如何执行此操作。在Django中,您需要在表之间建立一个关系,以便应用任何类型的联接 class ModelA(models.Model): email = models.EmailField(unique=True) model_b = models.ForeignKey(to=Mode

我有两种型号,都有一个唯一的钥匙:电子邮件。对于这两种模型,字段EMAIL是唯一的,但是模型A的一些EMAIL不一定存在于模型B中。我想执行内部联接,但由于我对Django非常陌生,我不知道如何执行此操作。

在Django中,您需要在表之间建立一个关系,以便应用任何类型的联接

class ModelA(models.Model):
     email = models.EmailField(unique=True)
     model_b = models.ForeignKey(to=ModelB, null=True, blank=True)

class ModelB(models.Model):
     email = models.EmailField(unique=True)
然后


具有相同电子邮件id的实例应该相互链接。

您应该像这样定义电子邮件模型

class Email(models.Model):
    """
    Email model.
    """
    email = models.EmailField(
        unique=True,
        error_messages={
            'unique': "This email has already been registered."
        }
    )

    def __str__(self):
        return self.email
然后使用ForeignKey创建与电子邮件模型相关的两个模型

或者您只需要为每个型号使用EmailField来保存电子邮件

class ModelA(models.Model):
    """
    A model.
    """
    email = models.EmailField(
        verbose_name="Email",
        unique=True,
    )
    ...other fields
class ModelA(models.Model):
    """
    A model.
    """
    email = models.EmailField(
        verbose_name="Email",
        unique=True,
    )
    ...other fields