フィールド first_name、last_name、email を持つ人物モデルがあります。これらのフィールドを、既存のインスタンスの DB をチェックするビューに送信したいと思います。存在する場合は 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 にしたい主な理由は、アプリの他の部分に既に含まれているミックスインなどを使用できるようにするためです。
編集:残りのフレームワークで利用可能な ViewSets を使用することを考えましたが、この機能を GET メソッドと POST メソッドに分割し、レコードを取得して更新または作成して投稿します。私は基本的にどちらかを受け入れることができるビューが必要です。