How to use dynamic foreignkey in Django?

前端 未结 2 1650
陌清茗
陌清茗 2020-12-12 13:45

I want to connect a single ForeignKey to two different models.

For example:

I have two models named Casts and Articles

2条回答
  •  时光取名叫无心
    2020-12-12 14:35

    Here is how I do it:

    from django.contrib.contenttypes.models import ContentType
    from django.contrib.contenttypes import fields
    
    
    class 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 Faves and

        fields.GenericRelation(Faves)
    

    to Article and Cast

    contenttypes docs

提交回复
热议问题