我有一个包含 first_name、last_name 和 email 字段的人员模型。我想将这些字段发送到将检查数据库中现有实例的视图。如果有,则返回 ID,如果没有,则创建新实例并返回新 ID。使用标准 FBV 我会这样做(缩减版本,减去验证等):
from django.http import HttpResponse
from mysite.models import Person
import json
def get_or_create_person(request):
try:
person = Person.objects.get(first_name=request.POST['first_name'],
last_name=request.POST['last_name'], email=request.POST['email'])
except Person.DoesNotExist:
person = Person(first_name=request.POST['first_name'],
last_name=request.POST['last_name'], email=request.POST['email'])
person.save()
response = {'id': person.id}
return HttpResponse(json.dumps(response))
将其转换为使用 CBV 并将其与其余框架绑定是否有任何实际意义,如果是这样,我将如何去做?我想要它作为 CBV 的主要原因是我可以使用我已经包含在我的应用程序其他部分中的 mixins 等。
编辑:我考虑过使用通过其余框架可用的 ViewSet,但他们将此功能拆分为 GET 和 POST 方法,获取检索记录并发布更新或创建记录。我基本上需要一个可以接受的观点。