Python 动态更改Django模型属性

Python 动态更改Django模型属性,python,django,factory-boy,Python,Django,Factory Boy,我正在尝试为django应用程序创建fixture,用于具有循环依赖关系的应用程序 型号: from django.db import models class A(models.Model): b = models.ForeignKey(B) class B(models.Model): c = models.ForeignKey(C) class C(models.Model): a = models.ForeignKey(A, null=False) 工厂:

我正在尝试为django应用程序创建fixture,用于具有循环依赖关系的应用程序

型号:

from django.db import models

class A(models.Model):
    b = models.ForeignKey(B)

class B(models.Model):
    c = models.ForeignKey(C)

class C(models.Model):
    a = models.ForeignKey(A, null=False)
工厂:

# in AFactory
b = SubFactory(BFactory)
# in BFactory
c = SubFactory(CFactory)
# in CFactory
a = CircularSubFactory('a_factory', 'AFactory', b__c__a=None)
当使用这些工厂运行我的工厂脚本时,我面临一个
ValueError:cannotassignnone:“C.a”不允许空值
错误,这是正常的,因为
C.a
设置了
null=False

是否可以加载
C
,更改
C.a
以设置
null=True
,然后运行我的工厂脚本

有几点:

  • 我知道那会很难看,但似乎我别无选择。但它仅在内部用于创建装置
  • 我不能改变我的模型,因为它是一个已经运行的应用程序,这些类是核心的一部分

如果您的装置为该C.a关系输出空值,您希望装置如何工作?它们不会导入。所以数据库中的列不允许null,您想强制它允许null而不改变它吗?显然这是不可能的。还是我遗漏了什么?@freakish:我将在一个自定义管理命令中运行factory_boy脚本,该命令将更改表(是的,真的…。@Jordan我不知道是否可以获取
对象的引用。我已经问过factory_boy的创建者我应该如何在IRC上处理这个问题,现在正在等待他的回答。