我正在为Django设计一个服务公司的检查应用程序,并且对我的模型有一个深奥的问题。这就是我挣扎的场景:
Site(models.Model):
name = CharField()
Generator(models.Model):
number = CharField()
site = ForeignKey(Site)
Pump(models.Model):
number = CharField()
site = ForeignKey(Site)
Jobs(models.Model):
asset = ?
site = ForeignKey(Site)
我想要做的是将Generator或Pump对象分配给Jobs中的资产字段。我不希望生成生成器和泵号的列表,而是希望该字段指向实际模型本身,这样我可以向后引用每个作业而不扫描两个表。
有什么想法吗?在工作模型中拥有资产属性会有所帮助吗?我在想这个吗?
使用Django 1.11.1和Python 3.6
答案 0 :(得分:0)
您可以使用documentation
中显示的通用外键因为这是一个单行的答案。为了扩展它:
from django.db import models
from django.contrib.contenttypes.fields import GenericRelation
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
class Asset(models.Model):
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
...
class Job(models.Model):
assets = GenericRelation(Asset)
...