一尘不染

Django是否可以自动创建相关的一对一模型?

django

我在不同的应用程序中有两个模型:modelA和modelB。他们有一对一的关系。django有什么方法可以在保存模型A时自动创建并保存模型B?

class ModelA(models.Model):
    name = models.CharField(max_length=30)

class ModelB(models.Model):
    thing = models.OneToOneField(ModelA, primary_key=True)
    num_widgets = IntegerField(default=0)

当我保存一个新的ModelA时,我想要一个条目自动保存在ModelB中。我怎样才能做到这一点?有没有一种方法可以在ModelA中指定呢?还是这不可能,我只需要在视图中创建并保存ModelB?

编辑说模型在不同的应用程序中。


阅读 410

收藏
2020-03-30

共1个答案

一尘不染

看看django-annoying中的AutoOneToOneField 。从文档:

from annoying.fields import AutoOneToOneField

class MyProfile(models.Model):
    user = AutoOneToOneField(User, primary_key=True)
    home_page = models.URLField(max_length=255)
    icq = models.CharField(max_length=255)

(django-annoying是一个很棒的小程序库,其中包含诸如render_to装饰器以及get_object_or_None和get_config函数之类的宝石)

2020-03-30