具有多个模型的 Django 外键关系
Django foreign key relationship with multiple models
我有许多不同类型字段的不同模型。我想对多个模型使用外键。喜欢:
class Model1(models.Model):
title = models.TextField()
body = models.TextField()
class Model2(models.Model):
tag = models.CharField(max_length=200)
uploadedDate = models.DateTimeField(auto_now_add=True)
class MainModel(models.Model):
content = models.ForeignKey([Model1, Model2], on_delete=models.CASCADE) # this will give error
我该怎么做?
models.py
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes.fields import GenericForeignKey
class MainModel(models.Model):
target_ct = models.ForeignKey(ContentType,
related_name='target_obj', on_delete=models.CASCADE)
target_id = models.PositiveIntegerField()
target = GenericForeignKey('target_ct', 'target_id')
现在您可以从您的主模型访问任何您想要的模型。
要使用它,假设您有一个这样的实例。
model1 = Model1.objects.first()
要将其传递给您的 MainModel,您只需执行以下操作即可。
MainModel.objects.create(target=model1)
我有许多不同类型字段的不同模型。我想对多个模型使用外键。喜欢:
class Model1(models.Model):
title = models.TextField()
body = models.TextField()
class Model2(models.Model):
tag = models.CharField(max_length=200)
uploadedDate = models.DateTimeField(auto_now_add=True)
class MainModel(models.Model):
content = models.ForeignKey([Model1, Model2], on_delete=models.CASCADE) # this will give error
我该怎么做?
models.py
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes.fields import GenericForeignKey
class MainModel(models.Model):
target_ct = models.ForeignKey(ContentType,
related_name='target_obj', on_delete=models.CASCADE)
target_id = models.PositiveIntegerField()
target = GenericForeignKey('target_ct', 'target_id')
现在您可以从您的主模型访问任何您想要的模型。
要使用它,假设您有一个这样的实例。
model1 = Model1.objects.first()
要将其传递给您的 MainModel,您只需执行以下操作即可。
MainModel.objects.create(target=model1)