我正在尝试创建一个系统来设置问题,它会自动创建用户定义的自定义字段,该字段将存储在另一个模型中。我将当前模型设置为与自定义字段模型具有多对多关系,并覆盖save方法,以便为每个自定义字段添加默认值。
当我保存问题模型后使用.add方法时,似乎什么也没发生,因此没有创建多对多关系。可以在Django Admin界面中建立关系。
类Issue(models.Model):
class Meta:
verbose_name = "Issues"
verbose_name_plural = "Issues"
title = models.TextField(null=False, blank=False)
description = models.TextField()
owner = models.ForeignKey(Organisation, on_delete=models.CASCADE)
category = models.ForeignKey(IssueCategory, on_delete=models.CASCADE)
state = models.ForeignKey(IssueStates, on_delete=models.CASCADE)
project = models.ForeignKey(Project, on_delete=models.CASCADE)
assignedTo = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
customFields = models.ManyToManyField(IssueCustomFields, blank=True)
def save(self, *args, **kwargs):
super(Issue, self).save(*args, **kwargs)
for x in IssueCustomFieldDefinitions.objects.filter(owner=self.owner):
issueCustom = IssueCustomFields.objects.create(
value=x.default,
fieldDefinition = x,
owner = self.owner,
)
self.customFields.add(issueCustom)
print(self.customFields.all())
我希望保存问题模型后,它会遍历用户已设置的所有自定义字段,并创建它的实例以及建立关系。从未建立关系(尽管创建了实例)
答案 0 :(得分:0)
多对多关系不依赖于save方法。如果您将多个模型之间的关系分配给多对多,您不需要保存任何一个模型。