我有一个由两个ForeignKey字段组成的模型,如下所示。 (这是ManytoMany through
字段)
class EntityConceptLink(models.Model):
entity = models.ForeignKey(Entity)
standard_concept = models.ForeignKey(StandardConcept)
other fields...
我正在尝试创建这样的对象:
EntityConceptLink.objects.get_or_create(
entity_id=entity_id, # passing in an integer, should be PK of Entity
standard_concept=concept) # passing in a model instance
问题是,当我传入对应于不存在的实体的entity_id时,上面的代码仍以某种方式保存了模型实例。只有在我尝试entityconceptlinkinstance.entity
时才会DoesNotExist: Entity matching query does not exist
被提升。
在尝试保存期间,模型是否应该无法验证?我在这里做错了吗?
答案 0 :(得分:0)
是的,我认为下面的代码应该可以正常工作。
EntityConceptLink.objects.get_or_create(
entity__id=entity_id, # Believe `id` would be the primary key
standard_concept=concept)
在上述情况下,如果实体模型找不到所需的id,则会引发错误。请参阅实体ID中的使用双__
而不是单_
。