在我的博客中,我决定允许用户编辑帖子(我正在使用Django),但是我不确定什么是我的模型正确的实现方式。在下面的代码中使用多表继承是一个好主意吗?我还想跟踪所有帖子,以及每个新编辑的帖子的原件。
class Post(models.Model):
title = models.CharField(max_length=500)
text = models.TextField()
creation_date = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(User)
def __unicode__(self):
return "%s %s by %s" % (self.title, self.creation_date, self.user)
class Edit(Post):
edited_date = models.DateTimeField(auto_now_add=True)
editor = models.OneToOneField(User)
def __unicode__(self):
return "%s edited by %s" % (self.convention, self.login)
最佳答案
您需要的是版本控制。有可以实现它的应用程序。但是,如果您想自己做,则您的Edit
模型必须具有对Post
模型的引用。并且必须指向与该编辑的作者相对应的特定帖子。这必然意味着您必须在每次保存帖子时创建一个Post
实例,并且必须从Edit实例中指向该新实例。
这样的事情,但可能需要做更多的工作-
class Post(models.Model):
title = models.CharField(max_length=500)
text = models.TextField()
creation_date = models.DateTimeField(auto_now_add=True)
edited_date = models.DateTimeField(auto_now_add=True)
author = models.ForeignKey(User)
def __unicode__(self):
return "%s at %s by %s" % (self.title, self.creation_date, self.author.first_name)
class Edit(models.Model):
creation_date = models.DateTimeField(auto_now_add=True)
editor = models.ForeignKey(User)
post = models.ForeignKey(Post)
def __unicode__(self):
return "%s edited by %s" % (self.post.title, self.editor.first_name)
关于python - 如何允许用户使用Django编辑帖子?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18744525/