会場と多対 1 の関係を持つルーム モデルがあります。
会場には多くの部屋がある場合があります。
残りのフレームワークで http メソッドを設定しようとしているので、パーミッションを追加するとうまくいきます。
したがって、誰かが会場からルームを削除したい場合、1 その人物がその会場へのアクセス許可を持っていることを確認する必要があります 2 そのルームがその会場に接続されていることを確認する必要があります
会場モデルを取得してから会場モデル room_set を取得し、room_set をチェックして、削除したいモデルのルーム プライマリキーを持つルームが存在するかどうかを確認します。
私がこれまでに持っているもの:
class GetEditDeleteVenueRoom(APIView):
def get(self, request, *args, **kwargs):
pass
def post(self, request, *args, **kwargs):
print('wait its over here')
def delete(self, request, *args, **kwargs):
venuepk = kwargs.get('venuepk', None)
venue = get_object_or_404(Venue, pk=venuepk)
venuerooms = venue.room_set
print(venuerooms)
return Response({})
会場の部屋を相互にやり取りして、会場の部屋の各オブジェクトをチェックできることを願っていますが、会場の部屋はpythonオブジェクトではないため、機能しないと強く感じていますか? おそらくそうです。forループを実行した後、この質問を更新するか、すべてが正常に機能していることがわかった場合は削除する可能性があります。
私の質問は、どのようにルーム セットを取得し、検索している roompk を持つルームがその中にあるかどうかを確認する方法です。
予想通り、私が試みたコードでエラーが発生しました:
def delete(self, request, *args, **kwargs):
venuepk = kwargs.get('venuepk', None)
venue = get_object_or_404(Venue, pk=venuepk)
venuerooms = venue.room_set
roompk = kwargs.get('roompk')
roomobject = None
for room in venuerooms:
if room.pk == roompk:
roomobject = room
roomobject.delete()
print(venuerooms)
return Response({})
私が得たエラー:
File "/home/rickus/Documents/softwareProjects/211hospitality/suitsandtables/backend/virtualsuits/suitsandtables/venues/views.py", line 125, in delete
for room in venuerooms:
TypeError: 'RelatedManager' object is not iterable
私ができることのアイデアはありますか?
新しい編集:
そのため、以下の回答を実装all()
し、会場の定義に追加しました
しかし、今は新しいエラーがあります。forループでNone属性を明らかにオーバーライドしているため、これは意味がありません。
def delete(self, request, *args, **kwargs):
venuepk = kwargs.get('venuepk', None)
venue = get_object_or_404(Venue, pk=venuepk)
venuerooms = venue.room_set.all()
roompk = kwargs.get('roompk')
roomobject = None
for room in venuerooms:
if room.pk == roompk:
print(room)
roomobject = room
roomobject.delete()
print(venuerooms)
return Response({})
エラー:
File "/home/rickus/Documents/softwareProjects/211hospitality/suitsandtables/backend/virtualsuits/suitsandtables/venues/views.py", line 129, in delete
roomobject.delete()
AttributeError: 'NoneType' object has no attribute 'delete'
[14/Mar/2018 20:01:53] "DELETE /api/suitsadmin/venue/1/room/15 HTTP/1.1