如果我有两个模型
class modelA(models.Model):
# properties...
class modelB(models.Model):
# properties
并且我希望两个模型都到images
字段,那么我将如何编写图像模型?如果它只是一个,那么我认为它会像:
class Image(models.Model):
image = models.ForeignKey(modelA)
因此,如果我还希望 modelB
有图像,那将如何工作?我是否必须编写 ImageA
和 ImageB
?
最佳答案
看起来你想使用 generic foreign keys :
from django.db import models
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
class Image(models.Model):
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
现在,您的 Image
模型可以具有指向任何其他模型的外键,并且您可以将多个图像与每个对象相关联。我上面链接的文档解释了如何使用此设置和查询对象等。
参见 this answer了解如何限制这一点,以便您可以仅对特定模型使用外键。
关于python - 具有多个模型的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37152200/