我刚刚完成了第二次 Django 教程的工作,现在我对事情的理解更加清楚了。但是,我仍然不清楚站点内的应用程序如何相互交互。
例如,假设我正在编写一个博客应用程序(显然是一个相当流行的活动)。博客文章和评论往往会一起出现,但它们又足够不同,以至于它们应该被构建到单独的应用程序中,这也是 Djano 开发的一般理念。
考虑以下示例。实际上,我实际上不会自己编写评论应用程序,因为网络上已经存在很好的代码,但这是出于演示/实践目的:
我的网站/博客/models.py
from django.db import models
class post(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=200)
content = models.TextField()
我的网站/评论/models.py
from django.db import models
from mysite.blog.models import post
class comment(models.Model):
id = models.AutoField()
post = models.ForeignKey(post)
author = models.CharField(max_length=200)
text = models.TextField()
是我上面写的,从另一个应用程序导入模型并将其设置为外键,Django 应用程序如何交互?或者是否有不同/更好的方法让组成网站的应用程序进行交互?
更新
根据一个回复中的建议,我正在阅读 contrib.contenttypes 的文档。如果我没看错,我可以像这样重写我的示例评论应用程序:
from django.db import models
from django.contrib.contenttypes.models import ContentType
from django.contrib.contentypes import generic
class comment(models.Model):
id = models.AutoField()
author = models.CharField(max_length=200)
text = models.TextField()
content_type = models.ForeignKey(ContentType)
content_object = generic.GenericForeignKey(content_type, id)
这是正确的吗?