【发布时间】:2016-10-19 14:27:11
【问题描述】:
我有三种不同的模型(Job、Tender、News)。
class Tender(models.Model):
title = models.CharField(max_length=256)
description = models.TextField()
department = models.CharField(max_length=50)
tags = models.ManyToManyField(Tag)
pub_date = models.DateTimeField(default=timezone.now)
class Job(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
title = models.CharField(max_length=256)
qualification = models.CharField(max_length=256)
employer = models.CharField(max_length=50)
salary = models.IntegerField()
tags = models.ManyToManyField(Tag)
pub_date = models.DateTimeField(default=timezone.now)
class News(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
title = models.CharField(max_length=150)
body = models.TextField()
tags = models.ManyToManyField(Tag)
pub_date = models.DateTimeField(default=timezone.now)
现在我想创建另一个模型(Post 类),这样每当创建一个新对象(工作、招标或新闻)时,就应该创建一个新的 post 对象,基本上这将使用信号来完成。
现在有了这个帖子类
- 我想使用创建工作/投标/新闻对象的用户进行过滤。
- 还使用 job/tender/news 对象中使用的标签进行过滤。
- 按 pub_date 排序。
我对 django 的内容类型非常陌生,对需要哪些字段感到困惑。我只知道这三个字段是必填的,content type、object id 和content object。
class Post(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
但是要获得我想要的功能(即过滤和排序依据),我是否必须将 user、tags 和 pub_date 字段添加到 Post 类?
【问题讨论】:
标签: django django-models django-contenttypes