Change models inheritance, use abstract Object model. This make us to use additional object_type field in Comment model.

portnov [2008-06-08 09:45:08]
Change models inheritance, use abstract Object model. This make us to use additional object_type field in Comment model.
Filename
mgmt/models.py
mgmt/views.py
diff --git a/mgmt/models.py b/mgmt/models.py
index f09f103..24f28fa 100644
--- a/mgmt/models.py
+++ b/mgmt/models.py
@@ -5,6 +5,8 @@ class Object(models.Model):
   name = models.CharField(max_length=64)
   text = models.TextField()
   created = models.DateTimeField()
+  class Meta:
+    abstract = True
   def __unicode__(self):
     return self.name

@@ -42,7 +44,8 @@ class Document(Object):
 class Comment(models.Model):
   author = models.ForeignKey(User)
   created = models.DateTimeField()
-  object = models.ForeignKey(Object)
+  object_id = models.IntegerField()
+  object_type = models.CharField(max_length=10)
   title = models.CharField(max_length=64,null=True)
   text = models.TextField()
   class Admin:
diff --git a/mgmt/views.py b/mgmt/views.py
index df388c9..ca9f8a6 100644
--- a/mgmt/views.py
+++ b/mgmt/views.py
@@ -45,11 +45,12 @@ def one_project(request,id):
     text  = request.POST['text']
     c = Comment(created=datetime.now(),
         author = request.user,
-        object = project,
+        object_id = project.id,
+        object_type = 'Project',
         title = title,
         text = text)
     c.save()
-  comments = Comment.objects.filter(object=project)
+  comments = Comment.objects.filter(object_id=project.id,object_type='Project')
   if can(request.user,'comment'):
     form = CommentForm()
   else:
@@ -98,11 +99,12 @@ def one_document(request,id):
     text  = request.POST['text']
     c = Comment(created=datetime.now(),
         author = request.user,
-        object = doc,
+        object_id = doc.id,
+        object_type = 'Document',
         title = title,
         text = text)
     c.save()
-  comments = Comment.objects.filter(object=doc)
+  comments = Comment.objects.filter(object_id=doc.id,object_type='Document')
   if can(request.user,'comment'):
     form = CommentForm()
   else:
ViewGit