बनाने मैं उपयोगकर्ता के लिए एक विदेशी कुंजी (किताब के मालिक) के साथ एक पुस्तक मॉडल है:अतिरिक्त फ़ील्ड जोड़ने के लिए ModelViewSet जब
class Book(models.Model):
owner = models.ForiegnKey(User)
...
मैं एक ModelViewSet बना लिया है (और अधिक सुरक्षा के लिए
class BookViewSet(viewsets.ModelViewSet):
model = Book
serializer_class = BookSerializer
def get_queryset(self):
return Book.objects.filter(owner=self.request.user)
अब एक नई किताब बनाने के लिए, मैं request.user साथ उपयोगकर्ता क्षेत्र को बचाने के लिए, बाकी ग्राहक से भेजे गए डेटा के साथ नहीं करना चाहता: पुस्तक के लिए जो उपयोगकर्ता के प्रवेश के स्वामित्व में पुस्तकों से पता चलता)। उदाहरण के लिए:
def create(self, request, *args, **kwargs):
request.DATA['user'] = request.user
... (some code to create new Book from request.DATA using serialize class)
लेकिन मैं यह त्रुटि आई: यह QueryDict उदाहरण अपरिवर्तनीय है। (मतलब है। डेटा एक अपरिवर्तनीय क्वेरी है और इसे बदला नहीं जा सकता है)
क्या आप डीजेंगो के बाकी ढांचे के साथ ऑब्जेक्ट बनाते समय अतिरिक्त फ़ील्ड जोड़ने का कोई बेहतर तरीका जानते हैं?
मॉडलसेरियलाइज़र क्लास में केवल स्वामी को पढ़ने के लिए कैसे करें? – Ali
बस read_only = True पास करें। Http://django-rest-framework.org/api-guide/fields देखें।एचटीएमएल # कोर-तर्क –
मैं मॉडलसेरियलाइज़र का उपयोग करता हूं और फ़ील्ड मॉडल फ़ील्ड से स्पष्ट रूप से परिभाषित किए जाते हैं। – Ali