如何在Django中使用动态外键?

发布于 2021-01-29 17:07:21

我想将一个连接ForeignKey到两个不同的模型。

例如:

我有两个名为Casts和的模型Articles,以及第三个模型Faves,用于收藏其他两个模型。如何进行ForeignKey动态调整?

class Articles(models.Model):
    title = models.CharField(max_length=100)
    body = models.TextField()

class Casts(models.Model):
    title = models.CharField(max_length=100)
    body = models.TextField()

class Faves(models.Model):
    post = models.ForeignKey(**---CASTS-OR-ARTICLES---**)
    user = models.ForeignKey(User,unique=True)

这可能吗?

关注者
0
被浏览
152
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这是我的方法:

    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)
    

    您将添加类似

        content_type = models.ForeignKey(ContentType)
        object_id = models.PositiveIntegerField()
        content_object = fields.GenericForeignKey('content_type', 'object_id')
    

    喜爱和

        fields.GenericRelation(Faves)
    

    到文章和演员表

    contenttypes
    docs



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看