相当于 Python 中的 .presence
Equivalent of .presence in Python
所以,我在 Rails 上使用 Ruby 有一段时间了,我想知道 Python/Django 中是否有类似 .presence
的东西。
Presence returns 接收器,如果它存在,否则 returns nil
.
object.presence 等同于:
object.present? ? object : nil
例如:
state = params[:state] if params[:state].present?
country = params[:country] if params[:country].present?
region = state || country || 'US'
becomes
region = params[:state].presence || params[:country].presence || 'US'
安东尼
在 Python 中,您可以通过执行以下操作来实现此目的,假设 params
是 dict
:
state = params.get('state')
country = params.get('country')
region = 'US' if (state and country) else None
方法dict.get(key)
将return 与已传递的键关联的值。如果不存在这样的键,它 returns None
.
如果您需要用实际的空字符串替换空值,您可以这样做:
state = params.get('state', '')
country = params.get('country', '')
region = 'US' if (state and country) else ''
总的来说,"Pythonic" 这样做的方法是使用表单:
class Address(Model):
state = ...
country = ...
region = ...
AddressForm = modelform_factory(Address)
#inside view
def view(request):
if request.method == 'POST':
form = AddressForm(request.POST, request.FILES)
if form.is_valid():
address = form.save(commit=False)
address.region = 'US' if address.state and address.country
address.save()
通过创建自定义 AddressForm class,您可以在保存实例之前自动执行此处理。这就是Formclasses.
的确切作用
所以,我在 Rails 上使用 Ruby 有一段时间了,我想知道 Python/Django 中是否有类似 .presence
的东西。
Presence returns 接收器,如果它存在,否则 returns nil
.
object.presence 等同于:
object.present? ? object : nil
例如:
state = params[:state] if params[:state].present?
country = params[:country] if params[:country].present?
region = state || country || 'US'
becomes
region = params[:state].presence || params[:country].presence || 'US'
安东尼
在 Python 中,您可以通过执行以下操作来实现此目的,假设 params
是 dict
:
state = params.get('state')
country = params.get('country')
region = 'US' if (state and country) else None
方法dict.get(key)
将return 与已传递的键关联的值。如果不存在这样的键,它 returns None
.
如果您需要用实际的空字符串替换空值,您可以这样做:
state = params.get('state', '')
country = params.get('country', '')
region = 'US' if (state and country) else ''
总的来说,"Pythonic" 这样做的方法是使用表单:
class Address(Model):
state = ...
country = ...
region = ...
AddressForm = modelform_factory(Address)
#inside view
def view(request):
if request.method == 'POST':
form = AddressForm(request.POST, request.FILES)
if form.is_valid():
address = form.save(commit=False)
address.region = 'US' if address.state and address.country
address.save()
通过创建自定义 AddressForm class,您可以在保存实例之前自动执行此处理。这就是Formclasses.
的确切作用