【问题标题】:Django Model: creating a new object on save for FKDjango 模型:在保存 FK 时创建一个新对象
【发布时间】:2013-06-12 14:38:55
【问题描述】:

在我的 Django 模型中,我在一个名为 Batch 的类上有以下 FK。

class Batch(models.Model):
    sender_name = models.ForeignKey(Originator,
                                        related_name='batch')

现在,这意味着用户在保存之前始终必须先创建一个 Originator。但是,我想,如果 Originator 不存在,则创建一个新的并将其添加到批处理中。我正在考虑在批处理的 save() 上执行此操作。但有更好的方法吗?

【问题讨论】:

  • 是通过表单创建Batch吗?
  • 可以,但也可以通过 tasypie api。任何 get_or_create() 快捷方式?
  • 您可以在 save 方法中执行此操作,但我会将逻辑放在模型的 save 方法之前 - 当您从 tastepie 接收上下文数据时,这样您就不会混淆逻辑 - 避免在另一个类的保存方法中创建不同类的对象
  • 所以你的说法是在视图中或在美味的情况下水合物?即 bundle.data['contact'] = Originator.objects.get_or_create()
  • 是的.. 这样逻辑就干净了,你所要做的就是 save() 。

标签: django django-models


【解决方案1】:

您可以在view 方法中创建FK 对象,或者如果是tasticpie,则添加水合物。

通过不在模型的save 方法中放置FK 对象创建逻辑,您不会混淆逻辑。换句话说,避免在另一个类的save 方法中创建一个类的对象。

这样逻辑就干净了,你所要做的就是bundle.data['contact'] = Originator.objects.get_or_create() 而不是覆盖save

【讨论】:

    猜你喜欢
    • 2017-11-11
    • 1970-01-01
    • 2011-07-01
    • 2020-10-31
    • 2012-03-07
    • 2015-01-31
    • 2020-09-11
    • 2021-03-24
    • 2022-10-14
    相关资源
    最近更新 更多