জাঙ্গো প্রশাসক: মডেলটিতে সম্পাদনযোগ্য = মিথ্যা 'হিসাবে চিহ্নিত এমন একটি ক্ষেত্র কীভাবে প্রদর্শিত করবেন?


100

যদিও কোনও ক্ষেত্রটি 'editable=False'মডেল হিসাবে চিহ্নিত হয়েছে , আমি প্রশাসক পৃষ্ঠাটি এটি প্রদর্শন করতে চাই to বর্তমানে এটি ক্ষেত্রটি পুরোপুরি আড়াল করে .. কীভাবে এটি অর্জন করা যায়?

উত্তর:


199

পঠনযোগ্য ক্ষেত্রগুলি ব্যবহার করুন । পছন্দ করুন (জাঙ্গো> = 1.2 এর জন্য):

class MyModelAdmin(admin.ModelAdmin):
    readonly_fields=('first',)

6
+1 বিশেষত যদি আপনি অ্যাডমিনে ক্ষেত্রটি সম্পাদনা করার পরিকল্পনা না করেন।
— মনোজ গোবিন্দন

এটি এখানে কাজ করে না (জাজানো ২.০) অ্যাডমিন ইন্টারফেসে ক্ষেত্রটি প্রদর্শিত হয় না।
— নার্ডোক

4
আমি আপনার ত্রুটিটি পুনরুত্পাদন করার জন্য কেবলমাত্র একটি নমুনা অ্যাপ্লিকেশন তৈরি করেছি (২.০৮.৮, অজগর 3.5) 3.5 এটি এখনও ঠিক কাজ করে। আপনার অ্যাপ্লিকেশন @nerdoc এ অন্য কিছু ভুল হতে পারে?
— tback

ওফফ! সাধারণ দ্রুত শট পরীক্ষা করা হয়নি, আমার ইনস্টলেশন নিয়ে সমস্যা বলে মনে হচ্ছে। ধন্যবাদ, এবং দুঃখিত।
— নারডোক

4
আমার জন্য অ্যাডমিন ক্র্যাশ হয়ে গেছে যখন আমি এটিকে যুক্ত করেছি fields, তবে আমি যখন এটি যুক্ত করেছিলাম তখন readonly_fieldsপর্যন্ত এটি উভয়টিতে যুক্ত না করা এবং এটি অ্যাডমিনে উপস্থিত হওয়া অবধি প্রদর্শিত হবে না।
— owenfi

18

হালনাগাদ

আপনি যদি ক্ষেত্রটি অ্যাডমিনে সম্পাদনযোগ্য তবে অন্য কোথাও সম্পাদনাযোগ্য না রাখতে চান তবে এই সমাধানটি কার্যকর। আপনি যদি ক্ষেত্রটি জুড়ে অ-সম্পাদনযোগ্য রাখতে চান তবে @ টিল ব্যাকহাউসের উত্তরটি আরও ভাল বিকল্প।

আসল উত্তর

এটি করার একটি উপায় হ'ল ModelFormঅ্যাডমিনে একটি কাস্টম ব্যবহার করা । এই ফর্মটি সম্পাদনযোগ্য করে তুলতে প্রয়োজনীয় ক্ষেত্রটিকে ওভাররাইড করতে পারে। এর মাধ্যমে আপনি editable=Falseঅ্যাডমিন ছাড়া অন্য কোথাও ধরে রাখতে পারেন । উদাহরণস্বরূপ (জ্যাঙ্গো 1.2.3 দিয়ে পরীক্ষা করা)

# models.py
class FooModel(models.Model):
    first = models.CharField(max_length = 255, editable = False)
    second  = models.CharField(max_length = 255)

    def __unicode__(self):
        return "{0} {1}".format(self.first, self.second)

# admin.py
class CustomFooForm(forms.ModelForm):
    first = forms.CharField()

    class Meta:
        model = FooModel
        fields = ('second',)

class FooAdmin(admin.ModelAdmin):
    form = CustomFooForm

admin.site.register(FooModel, FooAdmin)

4
এটি কাজ করে না, অন্তত জাজানো ১. on এ ফর্মটি অ্যাডমিন প্যানেলে সঠিকভাবে প্রদর্শিত হয়, তবে আমি যখন একটি ফর্ম সংরক্ষণ করি এবং এটিতে আবার ফিরে আসি তখন ফর্মগুলির মানটি আবার ডিফল্ট হয়।
— ইউফর্বিয়াম

6

আপনার কেবল পঠনযোগ্য ক্ষেত্রগুলি অবশ্যই ক্ষেত্রগুলিতে থাকতে হবে:

fields = ['title', 'author', 'content', 'published_date', 'updated_date', 'created_date']
readonly_fields = ('published_date', 'updated_date', 'created_date')

ধন্যবাদ, এটি আমার জন্য সমস্যাটি সমাধান করেছে। আমি কেবল readonly_fieldsশীর্ষে রেখেছি এবং fieldsসম্পাদনাযোগ্য ক্ষেত্রগুলি হতে দাও + readonly_fields(উভয়ই আমার কোডে টিপলস; আমি কেন তাদের তালিকা হিসাবে ঘোষণা করব তা দেখছি না)।
— ফেডেরিকো এস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.