首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Django:从*相关*模型中自动保存OneToOneField?

Django:从*相关*模型中自动保存OneToOneField?
EN

Stack Overflow用户
提问于 2012-04-06 04:00:40
回答 1查看 2.5K关注 0票数 2

考虑两个模型(忽略明显的逻辑问题):

代码语言:javascript
复制
class Owner(m.Model):
    id = m.IntegerField(primary_key=True)

class Pet(m.Model):
    owner = m.OneToOneField(Owner, related_name="pet", primary_key=True)

创建新的Owner时,是否可以自动保存其.pet

目前,情况是这样的:

代码语言:javascript
复制
>>> o = Owner()
>>> o.pet = Pet()
>>> o.save()
>>> o.id
42
>>> o.pet.id
None
>>> o.pet.owner_id
None
>>> o.pet.owner == o
True

但是我想(并且期望?)在保存o的过程中将保存该o.pet

备注:

如果您打算建议覆盖Owner.save:当OneToOneField handled?

  • Moving Pet to Owner的情况是不可取的,因为这将导致一个不太合理的数据库模式。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-06 05:10:14

如果我正确理解了这个问题,您可以在不覆盖Owner.save()的情况下使用django.db.models.signals.post_save来实现所需的结果

代码语言:javascript
复制
from django.db.models.signals import post_save

post_save.connect(save_pet_handler, sender=Owner, dispatch_uid="my_unique_identifier")

def save_pet_handler(sender, instance, created, **kwargs):
    ...

一旦调用了o.save(),就会触发一个信号来调用save_pet_handler,然后您可以在其中保存或更新o.pet,具体取决于created的布尔值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10035167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档