【发布时间】:2020-10-06 13:09:21
【问题描述】:
我的 django 应用中有以下模型:
from django.db import models
class TaskTracking(models.Model):
name = models.CharField(max_length=20)
class Parent(models.Model):
my_attribute = models.CharField(max_length=255, blank=True)
my_attribute2 = models.CharField(max_length=255, blank=True)
class Child(Parent):
tracking = models.ForeignKey(TaskTracking, on_delete=models.PROTECT)
然后我有另一个文件,我试图在其中创建这两个模型的实例。 我打算做的是根据参数调用 create 方法,如下所示:
from .models import *
class BaseObjectCreator:
model = Parent
def createModelObject(trackingEnabled=False):
tracking_instance = None
if trackingEnabled:
tracking_instance = TaskTracking.objects.create(name='Dummy name')
instance = self.model.objects.create(
my_attribute = 'value1',
my_attribute = 'value2',
tracking = tracking_instance if trackingEnabled
)
class ChildObjectCreator:
model = Child
def createModelObject(trackingEnabled=True):
super().createModelObject(trackingEnabled)
但这行不通并且抛出错误tracking = tracking_instance if trackingEnabled。我需要这样的东西来重构涉及上面定义的模型的大型代码。你能提出正确的策略吗?
附: - Child 模型的跟踪属性是一个 FK,因此暗示了 NOT NULL 约束。
【问题讨论】:
-
您没有指定
else。 -
@WillemVanOnsem,我想不出其他情况该怎么办。
标签: python django inheritance model overriding