জ্যাঙ্গো মডেলে ফিল্ডের জন্য ডিফল্ট মান


100

ধরুন আমার কাছে একটি মডেল রয়েছে:

class SomeModel(models.Model):
    id = models.AutoField(primary_key=True)
    a = models.CharField(max_length=10)
    b = models.CharField(max_length=7)

বর্তমানে আমি এই ধরণের অবজেক্ট তৈরি / সম্পাদনা করতে ডিফল্ট অ্যাডমিন ব্যবহার করছি। আমি bঅ্যাডমিন থেকে ক্ষেত্রটি কীভাবে সরিয়ে ফেলব যাতে প্রতিটি বস্তু একটি মান দিয়ে তৈরি করা যায় না , বরং এর ডিফল্ট মান পেতে পারে 0000000?

উত্তর:


156

সেট editableথেকে Falseএবং defaultআপনার ডিফল্ট মান।

http://docs.djangoproject.com/en/stable/ref/models/fields/#edable

b = models.CharField(max_length=7, default='0000000', editable=False)

এছাড়াও, আপনার idক্ষেত্র অপ্রয়োজনীয়। জ্যাঙ্গো এটি স্বয়ংক্রিয়ভাবে যুক্ত হবে।


22

আপনি এটির মতো ডিফল্ট সেট করতে পারেন:

b = models.CharField(max_length=7,default="foobar")

এবং তারপরে আপনি আপনার মডেলের অ্যাডমিন ক্লাসের সাহায্যে ক্ষেত্রটি আড়াল করতে পারেন:

class SomeModelAdmin(admin.ModelAdmin):
    exclude = ("b")

21

আপনি ডিফল্ট ক্ষেত্রেও কলযোগ্য ব্যবহার করতে পারেন, যেমন:

b = models.CharField(max_length=7, default=foo)

এবং তারপরে কলযোগ্য সংজ্ঞা দিন:

def foo():
    return 'bar'

4
এটি 1.8 তে কাজ করবে বলে মনে হচ্ছে না, যদিও ডকুমেন্টেশনটি এটি হওয়া উচিত বলে নির্দেশ করে। উচিত foo()একটি বর্গ পদ্ধতি হতে পারে?
টুথলেস রিবেল

4
আপনাকে @staticmethodফু ফাংশনটির চারপাশে মোড়ক সেট করতে হতে পারে ।
আসক্তি 14
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.