জ্যাঙ্গো: বুলিয়ানফিল্ড, ডিফল্ট মানটি কীভাবে সেট করবেন?


107

আমি জ্যাঙ্গোতে বুলিয়ানফিল্ড ব্যবহার করছি। ডিফল্টরূপে এটির দ্বারা উত্পাদিত চেকবক্সটি চেক না করা অবস্থা, আমি চাই রাষ্ট্রটি ডিফল্টরূপে চেক করা উচিত, কীভাবে এটি করা যায়?

উত্তর:


184

আপনি যদি কেবল একটি ভ্যানিলা ফর্ম ব্যবহার করছেন (কোনও মডেলফর্ম নয়), আপনি একটি ক্ষেত্রের প্রাথমিক মান ( https://docs.djangoproject.com/en/2.2/ref/forms/fields/#django.forms.Field ) সেট করতে পারেন । প্রাথমিক ) মত

class MyForm(forms.Form):
    my_field = forms.BooleanField(initial=True)

আপনি যদি কোনও মডেলফর্ম ব্যবহার করছেন, আপনি মডেল ক্ষেত্রে ( https://docs.djangoproject.com/en/2.2/ref/models/fields/#default ) একটি ডিফল্ট মান সেট করতে পারেন , যা ফলাফল মডেলফর্মের জন্য প্রযোজ্য যেমন

class MyModel(models.Model):
    my_field = models.BooleanField(default=True)

অবশেষে, আপনি যদি রানটাইমে আপনার ক্ষেত্রটি ডিফল্টরূপে নির্বাচিত হবে কিনা তা আপনি গতিশীলরূপে চয়ন করতে চান, আপনি যখন আরম্ভ করবেন তখন আপনি প্রাথমিক পরামিতিটি ফর্মটিতে ব্যবহার করতে পারেন :

form = MyForm(initial={'my_field':True})

2
ধন্যবাদ জন্য form = MyForm(initial={'my_field':True}), আমি সরাসরি এটি ডকুমেন্টেশনে খুঁজে পাইনি।
পাকো

এই উত্তরটি আসলে ভুল : প্রাথমিক মান ডিফল্ট নয় মান @DW উল্লেখ হিসাবে উত্তর
ফ্রিজ হইয়া গেল

142
from django.db import models

class Foo(models.Model):
    any_field = models.BooleanField(default=True)

1
এই নথি কোথায়? initialডক্সে (আনবাউন্ড ফর্মের জন্য) উল্লেখ রয়েছে , তবে নেইdefault
ব্যবহারকারী

7
এই উত্তরে, উত্তর প্রদানকারী একটি ফর্ম ক্ষেত্র নয়, একটি মডেল ক্ষেত্র ব্যবহার করছেন। পার্থক্য যেখানে সেখানে। এটি আমাকে ছিন্ন করেছে কারণ আমি কেবল ডিফল্ট কোয়ার্গ দেখতে এটি এড়িয়ে গেছি। ডিফল্ট কোনও বৈধ ফর্ম নয় orm প্রথম কুমারগ। এই উত্তরটি কিছুটা সাফ করার জন্য কেবল পোস্টটি চেয়েছিলেন, কারণ এতে 0 টি মন্তব্য রয়েছে।
জোশ ব্রাউন

এটি কেবল ফর্ম মডেল ক্ষেত্রের জন্য কাজ করে। এছাড়াও, প্রাথমিকভাবে ভিন্ন ভিন্ন প্রদর্শন করতে মডেলের ডিফল্ট পরিবর্তন করা কিছুটা বিশেষত প্রাথমিক মানটি সেট করার সময় খুব সহজ।
সাহসী

প্রাথমিকটি বয়স্ক জাঙ্গো থেকে। docs.djangoproject.com/en/2.0/ref/models/fields/#booleanfield
Sharpless512

6

আমি জাঙ্গো == 1.11 ব্যবহার করছি। সর্বাধিক ভোট পাওয়া উত্তর আসলে ভুল। জাঙ্গো থেকে দস্তাবেজটি পরীক্ষা করা হচ্ছে, এতে বলা হয়েছে:

প্রাথমিক - এই ক্ষেত্রের প্রাথমিক প্রদর্শনে ব্যবহার করার জন্য একটি মান to এই মান হয় না যদি ডেটা দেওয়া হয় একটি ফলব্যাক হিসাবে ব্যবহার।

এবং যদি আপনি ফর্ম বৈধকরণ প্রক্রিয়াটির কোডটি খনন করেন তবে আপনি দেখতে পাবেন যে প্রতিটি ক্ষেত্রের জন্য ফর্মটি তার উইজেটকে কল করবে value_from_datadict প্রকৃত মান পেতে তাই এই জায়গা যেখানে আমরা ডিফল্ট মান উদ্বুদ্ধ করতে পারেন।

এটি করার জন্য BooleanField, আমরা উত্তরাধিকার সূত্রে CheckboxInputডিফল্ট value_from_datadictএবং initফাংশনকে ওভাররাইড করতে পারি ।

class CheckboxInput(forms.CheckboxInput):
    def __init__(self, default=False, *args, **kwargs):
        super(CheckboxInput, self).__init__(*args, **kwargs)
        self.default = default

    def value_from_datadict(self, data, files, name):
        if name not in data:
            return self.default
        return super(CheckboxInput, self).value_from_datadict(data, files, name)

তারপরে তৈরি করার সময় এই উইজেটটি ব্যবহার করুন BooleanField

class ExampleForm(forms.Form):
    bool_field = forms.BooleanField(widget=CheckboxInput(default=True), required=False)

বৈধ জন্য Django 3.0। ধন্যবাদ।
কি ফ্রিজ হইয়া গেল

0

ডিজেঙ্গো 3.0-তে মডেল.পাইতে বুলিয়ানফিল্ডের ডিফল্ট মানটি সেট করা হয়েছে:

class model_name(models.Model):
example_name = models.BooleanField(default=False)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.