class C:
attribute_c = models.CharField()
class B:
class_a = models.ForeignKey(A)
class_c = models.ForeignKey(C)
foo = models.SomeField(null=True)
boo = models.SomeOtherField(null=True)
class A:
items = models.ManyToManyField(C, through='B')
attribute_a = models.CharField()
attribute_b = models.IntegerField()
attribute_c = models.DateField()
attribute_d = models.ForeignKeyField()
[...]
要在class A
和class C
之间建立关系,可以在表单中调用方法save_m2m()
。但是,由于使用的是自定义关系(class B
),因此您必须自己调用B.objects.create(instance_of_a, instance_of_b)
来创建它。
如何创建这种关系而不必在Forms.py中手动进行?也许重写add()
方法(A.items.add()
)以删除验证Django会不会在下面抛出错误?
无法在用于指定中介的ManyToManyField上设置值 模型。改用app.B的管理员。
我有一些类与我上面写的非常相似。到目前为止,当某些要求发生变化时,它们一直工作良好。这些要求迫使我引入了自定义中介类,并添加了属性foo
和boo
。
我使用FactoryBoy进行了大量测试,因此在不使用表单的情况下创建class A
的实例。如果每次创建class A
的实例时都必须手动插入此关系,那会很麻烦。
解决此问题的最佳方法是什么?
我基本上需要创建A和C之间的关系,而不必费心去实现B上的这些属性。我可以通过信号或其他方式来做到这一点。
PS:我正在使用Django 1.11.17。