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


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.