How to use dynamic foreignkey in Django?
Here is how I do it:
from django.contrib.contenttypes.models import ContentTypefrom django.contrib.contenttypes import fieldsclass Photo(models.Model): picture = models.ImageField(null=True, upload_to='./images/') caption = models.CharField(_("Optional caption"),max_length=100,null=True, blank=True) content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField() content_object = fields.GenericForeignKey('content_type', 'object_id')class Article(models.Model): .... images = fields.GenericRelation(Photo)
You would add something like
content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField() content_object = fields.GenericForeignKey('content_type', 'object_id')
to Favesand
fields.GenericRelation(Faves)
to Article and Cast
Here's an approach. (Note that the models are singular, Django automatically pluralizes for you.)
class Article(models.Model): title = models.CharField(max_length=100) body = models.TextField()class Cast(models.Model): title = models.CharField(max_length=100) body = models.TextField()FAVE_CHOICES = ( ('A','Article'), ('C','Cast'),)class Fave(models.Model): type_of_fave = models.CharField( max_length=1, choices=FAVE_CHOICES ) cast = models.ForeignKey(Casts,null=True) article= models.ForeigKey(Articles,null=True) user = models.ForeignKey(User,unique=True)
This rarely presents profound problems. It may require some clever class methods, depending on your use cases.