在Django中创建一个对象时也能同时创建另一个对象吗?我有如下代码,想要在创建AnotherModel实例之前先创建Model实例(同时创建AnotherModel)。
但是我遇到了这样的异常:
ValueError: 无法赋值 "u'Test": "AnotherModel.resource" 必须是一个 "Model" 实例。
class Model(models.Model):
name = models.CharFiled(max_length=50)
class AnotherModel(models.Model):
model = models.ForeignKey(Model, on_delete=models.CASCADE)
description = models.TextField()
我尝试使用Django信号 - pre_save。
@receiver(pre_save, sender=AnotherModel)
def save_model(sender, **kwargs):
# some code
但是我遇到了这样的异常:
ValueError: 无法赋值 "u'Test": "AnotherModel.resource" 必须是一个 "Model" 实例。
# some code
,因为你将你的Model
的name
设置为了AnotherModel
的model
(好吧,是resource
)而不是它的主键。但话说回来,信号通常不是一个好主意:https://lincolnloop.com/blog/django-anti-patterns-signals/ 很多 ORM 调用,如.update(..)
、.bulk_create
等,都可以规避这些问题。 - Willem Van OnsemAnotherModel
实例的代码行吗? - lmiguelvargasf