如何在 Django 中连接来自不同应用程序的模型?

Suk*_*rab 5 python database django django-models django-forms

我的 Django 项目中有一些应用程序。我目前正在使用两个应用程序“应用程序”和“用户”,我有两个与模型相关的问题:

问题一:

我想以这样的方式设计它,以便外部用户在Application/templates/Application/Apply.html并且信息将被添加到数据库中。内部用户也可以添加外部用户,但使用不同的模板:User/templates/User/AddNewContact.html

我可以从内部用户的角度添加新联系人:

User/models.py

class Contact(models.Model):
    ContactName = models.CharField(max_length = 250, default='')
    ContactResidence = models.CharField(max_length = 250, default='')
    Tel = models.CharField(max_length = 250, default='')

    def get_absolute_url(self):
        return reverse('User:ContactDetails', kwargs={'pk': self.pk}
        )

    def __str__(self):
        return self.ContactName



class Locations(models.Model):
    contact = models.ForeignKey(Contact, on_delete=models.CASCADE)
    Country = models.CharField(max_length=250, default='')

    def __str__(self):
        return self.Country
Run Code Online (Sandbox Code Playgroud)

我打算复制这个模型并将其粘贴到 Application/models.py 中,但有两个问题:

1) 我不希望外部用户被定向到 URL:User:ContactDetails从技术上讲,这是行不通的,因为我稍后将构建身份验证。

2)我觉得通过复制和粘贴我打破了“不要重复”的规则。

我应该使用外键连接两个模型吗?在这种情况下,最佳实践是什么?

问题2

我是否根据提供的模型处理一对多关系?我想要一个联系人及其个人信息(电话/电子邮件/地址)以及与该联系人关联的全球多个分支机构。

Par*_*eba 0

这些应用程序应位于同一项目中,并且您可以导入一个模型,如下所示:

import appName.models or

from appName.models import ClassName
Run Code Online (Sandbox Code Playgroud)

在 app2 模型中,您可以在导入类后使用foreignKey或manyTomany:

from appsName.models import ClassName

class Person(models.Model):
      con = ForeignKey(ClassName)
Run Code Online (Sandbox Code Playgroud)