【问题标题】:Django related model, create if does not exist?Django相关模型,不存在就创建?
【发布时间】:2015-05-13 07:32:25
【问题描述】:

我有以下型号:

class Merchant(BaseModel):
    user = OneToOneField(settings.AUTH_USER_MODEL, related_name='merchant', primary_key=True)

class MerchantExtended(BaseModel):
    merchant = OneToOneField(Merchant, related_name='extended', primary_key=True)
    billing_address = TextField()

当保存包含 Merchant 和 MerchantExtended 数据的表单时,我希望能够做到:

user = get_user_from_somewhere()
merchant = Merchant(user=user)

# Implicitly does get_or_create() and sets merchant.extended.merchant
merchant.extended.billing_address = '123 Main St'

# Implicitly does merchant.extended.save()
merchant.save()

以上内容是否已经存在,或者我是否需要覆盖某些模型属性/方法来完成此操作?

【问题讨论】:

    标签: django django-models django-1.7


    【解决方案1】:

    我觉得Django的update_or_create可以用在这里:

    merchant = Merchant.objects.get(user=request.user)
    ext_merchant, created = MerchantExtended.objects.update_or_create(
        merchant=merchant, defaults={'billing_address': '123 Main St'}
    )
    

    【讨论】:

      猜你喜欢
      • 2016-08-15
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多