EAV-Django

সফটওয়্যার স্ক্রিনশট:
EAV-Django
সফটওয়্যার বিবরণ:
সংস্করণ: 1.4.4
তারিখ আপলোড: 14 Apr 15
ডেভেলপার: Andrey Mikhaylenko
লাইসেন্স: বিনামূল্যে
জনপ্রিয়তা: 2

Rating: nan/5 (Total Votes: 0)

EAV-জ্যাঙ্গো সত্তা-গুন মূল্য তথ্য মডেল একটি বাস্তবায়ন প্রদান করে একটি পুনর্ব্যবহারযোগ্য জ্যাঙ্গো অ্যাপ্লিকেশন.
& Nbsp; সত্তা-গুন মূল্য মডেল (EAV), এছাড়াও পরিস্থিতিতে ব্যবহার করা হয় যা অবজেক্ট বৈশিষ্ট্য মান মডেল এবং খোলা স্কিমা হিসাবে পরিচিত যেখানে একটি জিনিস বর্ণনা করে ব্যবহার করা যেতে পারে যে গুণাবলী (বৈশিষ্ট্য, পরামিতি) সংখ্যা (একটি " সত্তা "বা" বস্তু ") সম্ভাব্য খুব সুবিশাল, কিন্তু আসলে একটি প্রদত্ত সত্তা প্রয়োগ করা হবে যে সংখ্যা তুলনামূলকভাবে বিনয়ী.
EAV-জ্যাঙ্গো (SQLite এবং মাইএসকিউএল পরীক্ষিত) ঐতিহ্যগত RDBMS সঙ্গে কাজ করে জরিমানা.
অগ্রাধিকার
অ্যাপ্লিকেশন একটি অনলাইন দোকান প্রকল্প থেকে বৃদ্ধি পায়, তাই এটি শুধু একটি একাডেমিক ব্যায়াম না সুন্দর বাস্তব এবং. প্রধান অগ্রাধিকার ছিল:
& Nbsp; 1. তথ্য নমনীয়তা,
& Nbsp; 2. প্রশ্নের দক্ষতা, এবং
& Nbsp; 3. কোড সম্পাদনা ছাড়াই সর্বোচ্চ Maintainability.
অবশ্যই এই বিনিময় প্রথা থেকেই বোঝা, এবং লক্ষ্য সাধারণ ক্ষেত্রে জন্য অন্তত ক্ষতিকারক সমন্বয় খুঁজে বের করতে.
বৈশিষ্ট্য সমূহ
সমস্ত উপলব্ধ মডেল অর্থাৎ EAV-জ্যাঙ্গো নিজস্ব টেবিলের মধ্যে যে কোন তথ্য সংরক্ষণ করা হয় না, বিমূর্ত হয়. পরিবর্তে, এটা বাক্সের বাইরে EAV জন্য সমর্থন থাকবে, যা আপনার নিজের মডেলের জন্য একটি ভিত্তি প্রদান করে.
EAV API- টি অন্তর্ভুক্ত করা হয়েছে:
& Nbsp; * / আপডেট / তৈরি করুন: মডেল দৃষ্টান্ত "বাস্তব" ক্ষেত্র এবং EAV বৈশিষ্ট্যাবলী জন্য standart এপিআই প্রদান. বিমূর্ততা, তবে, আপনার উপায় দাঁড়ায় এবং অন্তর্নিহিত উপাদান মোকাবেলা করা সম্ভব হবে না.
& Nbsp; * প্রশ্ন: BaseEntityManager অভিন্ন ফিল্টারের মধ্যে পদ্ধতির () এবং অগ্রাহ্য () প্রশ্ন করতে "বাস্তব" এবং EAV বৈশিষ্ট্যাবলী অন্তর্ভুক্ত করা হয়েছে.
& Nbsp; * বৈশিষ্ট্যাবলী জন্য স্বনির্ধারিত স্কিমাটার.
& Nbsp; * অ্যাডমিন: সব গতিশীল বৈশিষ্ট্যাবলী প্রতিনিধিত্ব এবং কোন বা সামান্য প্রচেষ্টা (eav.admin.BaseEntityAdmin ব্যবহার করে) সঙ্গে জ্যাঙ্গো অ্যাডমিন মধ্যে পরিবর্তন করা যাবে. স্কিমাটার সাধারণ জ্যাঙ্গো মডেল বস্তু হিসাবে আলাদাভাবে সম্পাদনা করা যাবে.
& Nbsp; * প্রজাপতি: পল অনুসন্ধান মূলত আপনি ব্যবহারকারী কিছু বৈশিষ্ট্য আকাঙ্খিত মান নির্বাচন করতে পারেন যাতে মডেল একটি নির্দিষ্ট উপসেট উপযুক্ত উইজেট এবং পছন্দ সঙ্গে বৈশিষ্ট্যাবলী প্রতিনিধিত্বমূলক একটি ফর্ম প্রয়োজন হবে ইত্যাদি অনলাইন দোকান, ক্যাটালগ, এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, জমা ফর্ম এবং মিলের একটি তালিকা পেতে. সাধারণ ক্ষেত্রে জ্যাঙ্গো-ফিল্টার না, কিন্তু EAV-জ্যাঙ্গো যে জন্য সরঞ্জামের একটি সম্পূর্ণ সেট প্রদান করে তাই এটি EAV সঙ্গে কাজ করবে না.
উদাহরণ
এর একটি EAV-বন্ধুত্বপূর্ণ মডেল সংজ্ঞায়িত একটি EAV বৈশিষ্ট্য তৈরি এবং এটি এর আচরণ কেমন দেখতে দিন. "EAV বৈশিষ্ট্যাবলী" আমি পৃথক বস্তু হিসাবে ডাটাবেসের মধ্যে সংরক্ষণ করা কিন্তু ব্যবহার করা এবং তারা সত্তা এর টেবিল কলাম হলে যেমন একটি উপায় অনুসন্ধান সেই অর্থ:
django.db আমদানি মডেল থেকে
eav.models আমদানি BaseEntity, BaseSchema, BaseAttribute থেকে
বর্গ ফলের (BaseEntity):
& Nbsp; শিরোনাম = models.CharField (MAX_LENGTH = 50)
বর্গ স্কিমা (BaseSchema):
& Nbsp; পাস
বর্গ Attr (BaseAttribute):
& Nbsp; স্কিমা = models.ForeignKey (স্কিমা, related_name = 'attrs')
পাইথন শেল #:
# বৈশিষ্ট্য "রঙ" নামে সংজ্ঞায়িত
>>> রং = Schema.objects.create (
... শিরোনাম = 'রঙিন',
... নাম = 'রঙ', # বর্জন শিরোনাম থেকে / slugify পূরণ করতে
... ডাটাটাইপ = Schema.TYPE_TEXT
...)
# একটি সত্তা তৈরি
>>> ই = Fruit.objects.create (শিরোনাম = 'আপেল', রঙ = 'সবুজ')
# "বাস্তব" এবং সংজ্ঞায়িত EAV একই ভাবে বৈশিষ্ট্যাবলী
>>> E.title
'আপেল'
>>> E.colour
'সবুজ'
>>> EAV সঙ্গে e.save () # পুলিশ স্বয়ংক্রিয়ভাবে বৈশিষ্ট্যাবলী
Attr দৃষ্টান্ত হিসেবে # তালিকা EAV গুণাবলী
>>> E.attrs.all ()
[]
একটি EAV বৈশিষ্ট্য দ্বারা অনুসন্ধান # এটি একটি সাধারণ ক্ষেত্র ছিল, যেমন যদি
>>> Fruit.objects.filter (রঙ = 'হলুদ')
[<ফল: আপেল>]
# সব প্রাঙ্গন অনুসন্ধান সমর্থিত
>>> Fruit.objects.filter (colour__contains = 'চিত্কার')
[<ফল: আপেল>]
আমরা, অ্যাক্সেস এটি একটি সত্য সত্তা ক্ষেত্র ছিল, যেমন যদি সংশোধন করুন এবং কোয়েরি রঙ, কিন্তু একই সময়ে তার নাম, টাইপ এবং এমনকি অস্তিত্ব সম্পূর্ণরূপে একটি স্কিমা উদাহরণস্বরূপ দ্বারা সংজ্ঞায়িত করা হয় যাবে. একটি স্কিমা বস্তুর একটি শ্রেণী হিসাবে বোঝা যায়, এবং সম্পর্কিত Attr বস্তু তার দৃষ্টান্ত করা যাবে. অন্য কথায়, স্কিমা বস্তু Charfield, IntegerField ও তথ্য স্তরে নির্ধারিত, যেমন, পাইথন হার্ড কোডেড না ভালো হয়. এবং তারা (আপনি দায়িত্ব EAV-জ্যাঙ্গো এলাকার বাইরে আছে যা কাস্টম সীমাবদ্ধতার করা না হলে) কোনো সত্তা জন্য "instantiated" করা যেতে পারে.
গুণাবলী নামগুলি সংশ্লিষ্ট স্কিমাটার সংজ্ঞায়িত করা হয়. এই একটি নাম পরিবর্তন করা হয়, একবার কোড ভঙ্গ করা যাচ্ছে যে ভয় হতে পারে. নাম শুধুমাত্র সরাসরি ম্যানুয়াল অনুসন্ধান জন্য ব্যবহার করা হয় আসলে এই ক্ষেত্রে না হয়. অন্য সব ক্ষেত্রে অনুসন্ধান হার্ড কোড নাম ছাড়া নির্মাণ করা হয়, এবং EAV বস্তু প্রাথমিক কী করে, না নাম সুত্রে বেঁধে. নাম যদি ফর্ম উপস্থিত আছে, কিন্তু আপনি নিরাপদে স্কিমাটার নামান্তর করতে পারেন, তাই ফর্ম, মেটাডেটা বর্তমান অবস্থা তার উপর নির্ভর করে তৈরি হয়. আপনি কি অ্যাডমিন ইন্টারফেস থেকে বিরতি করতে পারেন ধরনের হয়. আপনি একটি স্কিমা ডাটা টাইপ পরিবর্তন করা হলে, সব তার গুণাবলী একই থাকবে কিন্তু তাদের মান ধারণ করার জন্য অন্য কলাম ব্যবহার করতে হবে. আপনি ডাটা টাইপ পূর্বাবস্থায় ফিরিয়ে আনুন যখন, পূর্বে সঞ্চিত মান আবার তাদের এক্সেস আছে.
আরো উদাহরণ জন্য পরীক্ষা দেখুন.
তথ্য ধরনের
মেটাডাটা চালিত গঠন নমনীয়তা প্রসারিত করে কিন্তু কিছু বিনিময় প্রথা বোঝা. তাদের মধ্যে একজন (অতএব, ধীর প্রশ্নের) যোগ দিল সংখ্যা বৃদ্ধি করা হয়. আরেকটি কম তথ্য ধরনের হয়. তাত্ত্বিকভাবে, আমরা একটি সঞ্চয়ের জন্য উপলব্ধ সব ধরনের তথ্য সমর্থন করতে পারে না, কিন্তু বাস্তবে এটা মাত্র কয়েক ব্যবহৃত হচ্ছে সঙ্গে বৈশিষ্ট্য প্রতি অনেক কলাম তৈরি মানে হবে - আমরা EAV ব্যবহার করে এড়ানোর চেষ্টা ছিল ঠিক কি. EAV-জ্যাঙ্গো শুধুমাত্র (প্রয়োজন হলে আপনি এই তালিকা প্রসারিত করতে পারেন, যদিও) কিছু মৌলিক ধরনের সমর্থন করে কেন:
& Nbsp; * Schema.TYPE_TEXT, একটি পাঠ্য ক্ষেত্র;
& Nbsp; * Schema.TYPE_FLOAT, একটি FloatField;
& Nbsp; * Schema.TYPE_DATE, একটি DateField;
& Nbsp; * Schema.TYPE_BOOL, একটি NullBooleanField;
& Nbsp; * একাধিক পছন্দ (মান অর্থাৎ তালিকা) জন্য Schema.TYPE_MANY.
সমস্ত EAV বৈশিষ্ট্যাবলী সত্ত্বা এবং স্কিমাটার রেফারেন্স অনন্য সমন্বয় সঙ্গে একটি টেবিল রেকর্ড হিসেবে সংরক্ষণ করা হয়. (সত্তা contenttypes কাঠামোর মাধ্যমে উল্লেখ করা হয়, স্কিমা বিদেশী কি মাধ্যমে উল্লেখ করা হয়.) অন্য কথায়, দেওয়া সত্তা এবং স্কিমা সঙ্গে শুধুমাত্র একটি বৈশিষ্ট্য হতে পারে. স্কিমা বৈশিষ্ট্য একটি সংজ্ঞা. স্কিমা নাম, শিরোনাম, ডাটা টাইপ এবং এই স্কিমা কোন বৈশিষ্ট্য যা আবেদন অন্যান্য বৈশিষ্ট্য একটি সংখ্যা নির্ধারণ করে. আমরা EAV বৈশিষ্ট্যাবলী প্রবেশ বা অনুসন্ধান করা হলে, EAV যন্ত্রপাতি সবসময় বৈশিষ্ট্যাবলী মেটাডেটা হিসাবে স্কিমাটার ব্যবহার করে. কেন? বৈশিষ্ট্য নাম সম্পর্কিত স্কিমা মধ্যে সংরক্ষিত হয়, এবং কারণ মান গুণাবলী টেবিল একটি কলাম মধ্যে সংরক্ষিত হয়. আমরা মেটাডেটা তাকান না হওয়া পর্যন্ত এটি, যা কলাম জানি না.
আমরা উপরে দেওয়া উদাহরণে শুধুমাত্র একটি টেক্সট বৈশিষ্ট্য সঙ্গে অভিনয় করেছি. সমস্ত অন্যান্য ধরনের ঠিক TYPE_MANY ছাড়া একই আচরণ করে. এটা পছন্দ জন্য একটি অতিরিক্ত মডেল জড়িত হিসাবে অনেক-থেকে অনেক একটি বিশেষ ক্ষেত্রে. EAV-জ্যাঙ্গো একটি বিমূর্ত মডেল প্রদান কিন্তু বৈশিষ্ট্য মডেল ("পছন্দ" নামে অর্থাৎ করা বিদেশী কী) থেকে এটি একটি কংক্রিট মডেল (যেমন চয়েস), এবং পয়েন্ট উল্লেখ করা প্রয়োজন. চয়েস মডেল স্কিমা এ নির্দেশ করতে হবে. একটি উদাহরণ জন্য পরীক্ষা পরীক্ষা করে দেখুন

এই রিলিজে নতুন কি:.

  • তৈরি / আপডেট / এক্সেস: মডেল দৃষ্টান্ত প্রদান বাস্তব & quot; উভয় & জন্য standart API- টি; ক্ষেত্র এবং EAV গুণাবলী. বিমূর্ততা, তবে, আপনার উপায় দাঁড়ায় এবং অন্তর্নিহিত উপাদান মোকাবেলা করা সম্ভব হবে না.
  • প্রশ্ন: BaseEntityManager ফিল্টারের মধ্যে অভিন্ন পদ্ধতির অন্তর্ভুক্ত করা () এবং অগ্রাহ্য () প্রশ্ন ও করতে quot; বাস্তব, & quot; এবং EAV গুণাবলী.

  • গুণাবলী জন্য
  • স্বনির্ধারিত স্কিমাটার.
  • অ্যাডমিন: সব গতিশীল বৈশিষ্ট্যাবলী প্রতিনিধিত্ব এবং কোন বা সামান্য প্রচেষ্টা (eav.admin.BaseEntityAdmin ব্যবহার করে) সঙ্গে জ্যাঙ্গো অ্যাডমিন মধ্যে পরিবর্তন করা যাবে. স্কিমাটার সাধারণ জ্যাঙ্গো মডেল বস্তু হিসাবে আলাদাভাবে সম্পাদনা করা যাবে.
  • প্রজাপতি: পল অনুসন্ধান মূলত আপনি মডেলের একটি নির্দিষ্ট উপসেট ব্যবহারকারী কিছু বৈশিষ্ট্য আকাঙ্খিত মান নির্বাচন করতে পারেন যাতে উপযুক্ত উইজেট এবং পছন্দ সঙ্গে বৈশিষ্ট্যাবলী প্রতিনিধিত্বমূলক একটি ফর্ম প্রয়োজন হবে ইত্যাদি অনলাইন দোকান, ক্যাটালগ, এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, জমা ফর্ম এবং মিলের একটি তালিকা পেতে. সাধারণ ক্ষেত্রে জ্যাঙ্গো-ফিল্টার না, কিন্তু এটা EAV সঙ্গে কাজ করবে না, তাই EAV-জ্যাঙ্গো যে জন্য সরঞ্জামের একটি সম্পূর্ণ সেট প্রদান করে.

আবশ্যক

  • পাইথন
  • জ্যাঙ্গো

বিকাশকারী অন্যান্য সফ্টওয়্যার Andrey Mikhaylenko

Timetra
Timetra

14 Apr 15

Monk
Monk

14 May 15

মন্তব্য EAV-Django

পাওয়া মন্তব্যসমূহ না
মন্তব্য যোগ করুন
ছবি চালু!