title: Python Django - ForeignKey Class Choice for Model Field
body: <p>I want to make it so that i can choose a foreignkey for a field model/class when creating and instance of a model. So something like this:</p>
  
  <pre><code>class Posts(models.Model):
  
      OwnerType = (
          (Accounts, 'User'),
          (Groups, 'Group'),
      )
  
      PostTypes = (
          ('Text', 'Text'),
          ('Photo', 'Photo'),
          ('Audio', 'Audio'),
          ('Video', 'Video'),
          ('Link', 'Link'),
      )
  
      owner = models.ForeignKey(OwnerType, default = 0, related_name = "post_owner")
      ownerid = models.IntegerField(blank = False, default = 0)
      owner_type = models.CharField(blank = False, default = '', max_length = 50)
  
      title = models.CharField(max_length = 500, default = '')
      contents = models.CharField(max_length = 500, default = '')
      attachment = models.CharField(max_length = 500, default = '')
      attachment_type = models.CharField(max_length = 500, default = '')
      link = models.CharField(max_length = 500, default = '')
  
      post_type = models.CharField(max_length = 20, choices = PostTypes, default = '')
      status = models.CharField(max_length = 20, default = 'public') # either public, private, or deleted
  
      date_created = models.DateField(auto_now_add=True)
      last_active = models.DateField(auto_now=True)
  
      @property
      def serialize(self):
          return {
              'p_id': self.id,
  
              'ownerid': self.ownerid,
              'owner': self.owner.serialize,
              'owner_type': self.owner_type,
              'title': self.title,
              'contents': self.contents,
              'attachment': self.attachment,
              'attachment_type': self.attachment_type,
              'link': self.link,
              'post_type': self.post_type,
              'status': self.status,
              'date_created': self.date_created,
              'last_active': self.last_active
          }
  
      class Meta:
          db_table = "posts"
  
  # ---
  </code></pre>
  
  <p>but then i get this error:</p>
  
  <pre><code>    Traceback (most recent call last):
    File "manage.py", line 9, in &lt;module&gt;
      execute_from_command_line(sys.argv)
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
      utility.execute()
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/__init__.py", line 327, in execute
      django.setup()
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/__init__.py", line 18, in setup
      apps.populate(settings.INSTALLED_APPS)
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
      app_config.import_models(all_models)
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/apps/config.py", line 202, in import_models
      self.models_module = import_module(models_module_name)
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
      __import__(name)
    File "/Users/RyanWaite/Desktop/epsity/webapp/models.py", line 320, in &lt;module&gt;
      class Posts(models.Model):
    File "/Users/RyanWaite/Desktop/epsity/webapp/models.py", line 335, in Posts
      owner = models.ForeignKey(OwnerType, default = 0, related_name = "post_owner")
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/fields/related.py", line 754, in __init__
      RECURSIVE_RELATIONSHIP_CONSTANT,
  AssertionError: ForeignKey(((&lt;class 'webapp.models.Accounts'&gt;, u'User'), (&lt;class 'webapp.models.Groups'&gt;, u'Group'))) is invalid. First parameter to ForeignKey must be either a model, a model name, or the string u'self'
  </code></pre>
  
  <p>Is that even possible? can i choose the model for a foreignkey when creating a new instance of a model? I have two type of models that can make posts: users and groups. a user can make a post or a group can make a post.</p>