私は練習を休憩枠組みに入れるためにレンタルアプリケーションを開発しています。買い手が家賃の連絡先ボタンをクリックして、買い手がemail_idなどを記入しなければならない機能があります。残りのフレームワークの特定の家賃のための連絡先
rent = Rental.objects.get(id=token)
contact.objects.create(rent=rent, email_id=email_id, buyer=request.user)
APIViewのシリアライザとポスト機能の残りのフレームワーク作成機能を混乱させます。誰かが私の例を教えてくれますか?
class Rental(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=300, blank=False, null=False)
phone_number = models.PositiveIntegerField(null=False, blank=False)
class Contact(models.Model):
buyer = models.ForeignKey(User)
rental = models.ForeignKey(Rental, related_name="rent")
email_id = models.EmailField(blank=False, null=False)
class RentalSerializer(serializers.ModelSerializer):
user = serializers.ReadOnlyField(source='user.username')
galleries = GallerySerializer(many=True)
class Meta:
model = Rental
fields = ('__all__')
class ContactSerializer(serializers.ModelSerializer):
# buyer = UserSerializer(many=True)
# rent = RentalSerializer(many=True)
class Meta:
model = Contact
fields = '__all__'
class ContactedRent(APIView):
serializer_class = ContactSerializer
def get(self, request, token=None, format=None):
"""
Returns a list of contactedRent
"""
reply = {}
try:
contacted_rent = Contact.objects.filter(buyer_id=request.user.id)
if token:
specific_contacted_rent = contacted_rent.get(rental__id=token)
reply['data'] = self.serializer_class(specific_contacted_rent).data
else:
print ('no token')
reply['data'] = self.serializer_class(contacted_rent, many=True).data
except Contact.DoesNotExist:
return error.RequestedResourceNotFound().as_response()
except:
return error.UnknownError().as_response()
else:
return Response(reply, status.HTTP_200_OK)
def post(self, request, token=None, format=None):
"""
create a new contact to the rent
"""
rent = None
if not token is None:
try:
# contact = Contact.objects.get(buyer_id=request.user.id, rental__id=token)
rent = Rental.objects.get(id=token)
except Rental.DoesNotExist:
return RequestedResourceNotFound().as_response()
except:
return UnknownError.as_response()
serialized_data = self.serializer_class(instance=rent, data=request.data, partial=True)
if serialized_data.is_valid():
serialized_data.save()
else:
return error.ValidationError(serialized_data.errors).as_response()
私の例では、APIViewの作成機能と投稿機能について理解してもらえますか。ここでUPDATE
url(r'^contact/(?P<token>[0-9a-z]+)/$', ContactedRent.as_view(), name="create-contact-to-rent"),
トークン
あなたはrental
が提出されたデータとして渡されたくないので(EMAIL_ID)
'' ContactedRent' APIView'ためのようなあなたのURLconfは何ですか?そして、あなたはそれにどのデータを渡していますか? – user73657
が更新されました。家賃に連絡するには、家賃が連絡されているかどうかを追跡し、その家賃情報に連絡先情報を送信するために家賃IDが必要です。特定の投稿へのコメントと似ています。 – pythonBeginner
POSTされたデータに 'rent' IDを渡さなくなりましたか?すでにURLに入っているので – user73657