python - 更通用的 django 应用程序的 OneToMany 关系

标签 python django django-models

我正在尝试弄清楚如何生成一对多关系船(即“一个模型到另一个模型的对象列表”),而不必在子模型上使用外键。我想实现这一点是因为 child 应该不知道 parent 拥有通用应用程序。

例子:

class Payment(models.Model):
    lease = models.ForeignKey('leaseapp.Lease')
    created_at = models.DateTimeField(auto_now_add=True)
    amount = models.IntegerField()

还有我的其他应用:

class Lease(models.Model):
    leaserholder = models.CharField(max_length=300)

现在我希望租约有多次付款,但没有让我的付款模型特定于我的租约应用程序,它也应该可以在其他应用程序中使用。

这是最佳实践吗?

最佳答案

它看起来像通用关系。请参阅:here到 django 文档。通用外键和关系有时会在以后的开发过程中引起问题,但您也可以考虑一下:

class Payment(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    amount = models.IntegerField()

在 leaseapp 中

class Lease(models.Model):
    leaserholder = models.CharField(max_length=300)

class LeasePayment(models.Model):
    lease = models.ForeignKey(Lease)
    payment = models.OneToOneField(Payment)

优点:背后没有魔法,您的数据库模型很清晰。

关于python - 更通用的 django 应用程序的 OneToMany 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44546684/

相关文章:

javascript - Django 中的静态 html 页面

python - 带有字符串变量字段的 Django 过滤器

python - "Add a related_name argument to the definition for ' XXX'.的自动解决方案?

python - 在django中访问RelatedManager对象

python - 如何为特定列的每个不同值选择一行并合并以在 Python 中形成一个新的数据框?

python - 无效参数错误 : No OpKernel was registered to support Op 'CudnnRNN'

python - 什么是处理视频文件帧的好 Python 库?

python - 如何检查排序列表中是否存在序列?

python - 错误: PYTHON DJANGO PRAW REDDIT-API

python - jinja2 模板中的 url 函数在 Django 中抛出 AttributeError