В моем приложении 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 . Мне нужно что-то подобное для рефакторинга большого кода, который включает модели, подобные тем, которые определены выше. Вы можете предложить правильную стратегию?
PS - Атрибут отслеживания дочерней модели является FK, поэтому подразумевается ограничение NOT NULL.