擅长:python、mysql、java
<p>我认为这种功能的最佳位置是<code>QuerySet</code>或<a href="https://docs.djangoproject.com/en/1.9/topics/db/managers/" rel="nofollow">ModelManager</a>。例如,DRF的默认序列化程序使用<a href="https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/serializers.py#L846" rel="nofollow">the default model's manager</a>创建对象。不幸的是,<code>QuerySet</code>无法根据模型的字段轻松更改当前数据库(<code>self.db</code>),因此必须重写所有相关的方法。在</p>
<pre><code>class UserQuerySet(models.QuerySet):
def create(self, **kwargs):
obj = self.model(**kwargs)
self._for_write = True
obj.save(force_insert=True, using=kwargs.get('country'))
return obj
class User(models.Model):
objects = UserQuerySet.as_manager()
</code></pre>