在清理之前修改传入Django表单的数据


问题内容

我需要Form在清洁之前修改传入的数据。我使它工作了,但是看起来很糟糕:

    def __init__(self, *args, **kwargs):
        if len(args) > 0:
            data = args[0]
        elif 'data' in kwargs:
            data = kwargs['data']
        else:
            data = None
        if data is not None:
            data['content'] = ' '.join(data['content'].strip().split())
        super(TagForm, self).__init__(*args, **kwargs)

有一些简洁的解决方案吗?


问题答案:

您可以压缩if/ elif/else上一行很轻松地:

def __init__(self, *args, **kwargs):
    data = args[0] if args else kwargs.get('data', None)
    if data:
        data['content'] = ' '.join(data['content'].strip().split())
    super(TagForm, self).__init__(*args, **kwargs)

if args以及if len(args) > 0因为length == 0项目是Falselength > 0项目是而起作用True

if data``if data is not None之所以能正常工作,是因为您假设它data至少有一个键,如果有not None,则为True