我有一个下面的类(其他字段很简单(作者等),所以省略了。)
class Article(models.Model):
origin = models.ForeignKey('self', null=True, related_name="%(app_label)s_%(class)s_revision")
我想在a.website_article_revision
列表中存储文章的所有修订版。当我add
对该列表进行修订后,就像a.website_article_revision.add(rev)
那样,它会自动添加到Article.objects
管理器中,这可以理解,因为修订对象本身就是一个文章实例。但我不希望任何修订版本出现在经理对象中,只能出现在文章对象a.website_article_revision
的列表属性中。
P.S。我真的不想创建子类。
答案 0 :(得分:0)
答案 1 :(得分:0)
听起来像是custom managers的工作:
class ArticleManager(models.Manager):
def get_queryset(self):
return super(ArticleManager, self).get_queryset().filter(origin=None)
class Article(models.Model):
objects = ArticleManager()
origin = models.ForeignKey('self', null=True, related_name="%(app_label)s_%(class)s_revision")
这将替换objects
模型中的默认Article
经理,Article.objects.all()
将返回origin
null
为origin is None
的所有文章。
我假设检查ForeignKey
是否是您想要确定任何给定文章对象是否不是修订版。
编辑:您可能希望将来源OneToOneField
更改为create trigger info22 after insert on table_info1 for each row
when( :new.pid < 60 )
begin
dbms_output.put_line(' thus the given id is less than 60');
insert into table_info2 values(:new.pid, :new.pname, :new.ploc);
end;
。毕竟,一篇文章可能只有一个版本,而该版本可能有另一个版本,依此类推。