উত্তর:
ক্যোরিসেট অবজেক্ট update
পদ্ধতিটি ব্যবহার করুন :
MyModel.objects.filter(pk=some_value).update(field1='some value')
update
পদ্ধতি ভর আপডেটের জন্য মহান, কিন্তু এটা বন্ধ আপনার মাথা একটি সতর্কবার্তা যখন আপনি এটি ব্যবহার যে আপনি কোনো যে বস্তুর যে নিজে হতে পারে সংযুক্ত সংকেত পর্যালোচনা করা প্রয়োজন বহিস্কার সেট করা উচিত
MyModel.objects.filter(pk=some_value).update(field1=self.data)
জ্যাঙ্গো ডাটাবেস অবজেক্টগুলি অবজেক্ট তৈরি এবং পরিবর্তনের জন্য একই সংরক্ষণ () পদ্ধতিটি ব্যবহার করে।
obj = Product.objects.get(pk=pk)
obj.name = "some_new_value"
obj.save()
কীভাবে জঙ্গো বনাম আপডেট আপডেট করতে জানে S INSERT
যদি অবজেক্টের প্রাথমিক কী বৈশিষ্ট্যটি মানকে নির্ধারণ করা হয় যা সত্যের (যেমন, কোনওটি নয় বা খালি স্ট্রিং ব্যতীত অন্য কোনও মান) মূল্যায়ন করে তবে জাজানো একটি আপডেট আপডেট করে। যদি অবজেক্টের প্রাথমিক কী বৈশিষ্ট্যটি সেট না করা থাকে বা যদি আপডেট আপডেট কিছু আপডেট না করে তবে জ্যাঙ্গো একটি INSERT কার্যকর করে।
তথ্যসূত্র: https://docs.djangoproject.com/en/1.9/ref/models/inferences/
এই উত্তরটি উপরোক্ত দুটি পদ্ধতির তুলনা করে। আপনি যদি একক লাইনে অনেকগুলি অবজেক্ট আপডেট করতে চান তবে যান:
# Approach 1
MyModel.objects.filter(field1='Computer').update(field2='cool')
অন্যথায় আপনাকে কোয়েরি সেটটি নিয়ে পুনরাবৃত্তি করতে হবে এবং স্বতন্ত্র বস্তুগুলি আপডেট করতে হবে:
#Approach 2
objects = MyModel.objects.filter(field1='Computer')
for obj in objects:
obj.field2 = 'cool'
obj.save()
পদ্ধতির 1 দ্রুততর কারণ এটি 2 টি পদ্ধতির তুলনায় কেবল একটি ডাটাবেস ক্যোয়ারী তৈরি করে যা 'এন + 1' ডাটাবেস অনুসন্ধান করে eries (ক্যোয়ারী সেট n টি আইটেমের জন্য)
মুষ্টি পদ্ধতির একটি ডিবি ক্যোয়ারী তৈরি করে অর্থাত্ আপডেট, দ্বিতীয়টি দুটি করে: নির্বাচন করুন এবং তারপরে আপডেট করুন।
ট্রেডঅফটি হ'ল, ধরুন আপনার কোনও ট্রিগার রয়েছে, যেমন আপডেট করার মতো updated_on
বা এর সাথে সম্পর্কিত কোনও ক্ষেত্র, এটি সরাসরি আপডেটে অর্থাৎ ট্রিগল 1 এ ট্রিগার করা হবে না।
অ্যাপ্রোচ 1 একটি ক্যোরিসেটে ব্যবহৃত হয়, সুতরাং পদ্ধতির 2 এর ক্ষেত্রে নয়, একসাথে একাধিক অবজেক্ট আপডেট করা সম্ভব।
শুধুমাত্র serializer
কিছু ক্ষেত্রে , আপনি খুব সহজ উপায়ে আপডেট করতে পারেন!
my_model_serializer = MyModelSerializer(
instance=my_model, data=validated_data)
if my_model_serializer.is_valid():
my_model_serializer.save()
কেবল কোনও ক্ষেত্রে form
!
instance = get_object_or_404(MyModel, id=id)
form = MyForm(request.POST or None, instance=instance)
if form.is_valid():
form.save()
Django form
জ্যাঙ্গো প্রোপার থেকে এসেছেন।
update
এই পদ্ধতিটি ব্যবহার করেন তবে সেই মডেল বা অন্যান্য "কোড স্টাফ" এর সাথে সংযুক্ত কোনও সংকেত বস্তুর বিরুদ্ধে চলবে না। আগুনে পুড়ে যাওয়া কারও কাছ থেকে কেবল একটি পয়েন্টার :)