"Django模型什麼時候使用GenericForeignKey"

2024-09-28 01:27:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下型号:

class Dog(AbstractAnimals):
    pass
    class Meta:
        app_label = 'animals'

class Cat(AbstractAnimals):
    pass
    class Meta:
        app_label = 'animals'

是以下内容的摘要:

class AbstractAnimals(models.Model):   
    description = models.CharField()

这就是我的问题所在。如果我有一个房子模型,它可以有一个或两个 动物。我可以想出两种方法来解决这个问题,但我不确定哪种更好。你知道吗

class House(models.Model):   
      user = models.ForeignKey(settings.AUTH_USER_MODEL,  related_name='animal', null=True)

1)在房屋模型上使用2个通用外键

2)使用2个标准外键

3)另一种选择?你知道吗

哪一个是更好的选择,和或意见?谢谢。你知道吗


Tags: 模型appmodelmodelspassdescriptionlabelmeta
1条回答
网友
1楼 · 发布于 2024-09-28 01:27:40

如果House可以有两个动物,而animal只能在一个House中,并且您希望您的代码可以轻松地添加其他动物类型,那么AbstractAnimal应该具有House的常规外键,在这种情况下House不应该具有任何外键。你知道吗

对象(或模型或表格)之间的这种关系通常被称为“多对一”:许多动物被连接(或可以)到一个房子。你知道吗

GenericForeignKeys的示例用法是comment或tag模型,其中可以对许多不相关的内容类型(文章、博客条目、图像、视频等)进行评论或标记。在这种情况下,注释或标记模型应该具有指向“未知”模型的GenericForeignKey。Internet上提供的一些注释和标记包使用这种模式。你知道吗

在我看来,GenericForeignKey最适合于编写一个可重用的应用程序或包,其中的模型在编写时需要与一些未知的内容类型(其他模型)相关。你知道吗

相关问题 更多 >

    热门问题