我有三种不同的模式(工作,招标,新闻)。
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),这样无论何时创建新对象(作业或招标或新闻),都应该创建一个新的帖子对象,基本上这将使用信号完成。
现在有了这个帖子类
我对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
类?
答案 0 :(得分:0)
由于GenericForeignKey的实现方式,您无法使用 字段直接使用过滤器(例如filter()和exclude())via 数据库API。因为GenericForeignKey不是普通字段 对象,这些例子不起作用:
我认为简短的回答是您需要包含user
,tags
和pub_date
,或者更好的是通过ForeignKey链接到模型。