আমার কাছে মডেল ফু আছে যা ফিল্ড বার রয়েছে। বার ক্ষেত্রটি অনন্য হওয়া উচিত, তবে এতে নালার অনুমতি দিন, অর্থাত্ বার ক্ষেত্রটি যদি আমি একাধিক রেকর্ডের অনুমতি দিতে চাই null
তবে তা যদি null
মান না হয় তবে অবশ্যই তা অনন্য।
এখানে আমার মডেল:
class Foo(models.Model):
name = models.CharField(max_length=40)
bar = models.CharField(max_length=40, unique=True, blank=True, null=True, default=None)
এবং এখানে টেবিলের জন্য সম্পর্কিত এসকিউএল রয়েছে:
CREATE TABLE appl_foo
(
id serial NOT NULL,
"name" character varying(40) NOT NULL,
bar character varying(40),
CONSTRAINT appl_foo_pkey PRIMARY KEY (id),
CONSTRAINT appl_foo_bar_key UNIQUE (bar)
)
অ্যাডমিন ইন্টারফেসটি যখন 1 টিরও বেশি আইও অবজেক্ট তৈরি করতে ব্যবহার করে যেখানে বারটি শূন্য থাকে এটি আমাকে ত্রুটি দেয়: "এই বারের সাথে ফুও ইতিমধ্যে বিদ্যমান।"
তবে আমি যখন ডাটাবেজে intoোকি (পোস্টগ্রিএসকিউএল):
insert into appl_foo ("name", bar) values ('test1', null)
insert into appl_foo ("name", bar) values ('test2', null)
এটি কাজ করে, ঠিক আছে, বারটি নাল হওয়ায় এটি আমাকে 1 টিরও বেশি রেকর্ড সন্নিবেশ করতে দেয়, তাই ডাটাবেস আমাকে যা করতে চায় তা করতে দেয়, এটি জাঙ্গো মডেলের কিছু ভুল। কোন ধারনা?
সম্পাদনা
ডিবি পর্যন্ত সমাধানের বহনযোগ্যতা কোনও সমস্যা নয়, আমরা পোস্টগ্র্রেসে খুশি। আমি কলযোগ্য হিসাবে অনন্য স্থাপনের চেষ্টা করেছি, যা বারের নির্দিষ্ট মানগুলির জন্য সত্য / মিথ্যা ফিরিয়ে দেওয়া আমার ফাংশন ছিল , এটি কোনও ত্রুটি দেয় নি, তবে এটির মত প্রভাব ছিল না যেমন এর কোনও ফল ছিল না।
এখনও অবধি, আমি বারের সম্পত্তি থেকে অনন্য স্পেসিফায়ারটিকে সরিয়ে দিয়েছি এবং অ্যাপ্লিকেশনটিতে বারের স্বতন্ত্রতা পরিচালনা করছি , তবে এখনও আরও মার্জিত সমাধানের সন্ধান করছি। কোন সুপারিশ?
def get_db_prep_value(self, value, connection, prepared=False)
পদ্ধতি কল হিসাবে প্রয়োজন হবে । পরীক্ষা করে দেখুন groups.google.com/d/msg/django-users/Z_AXgg2GCqs/zKEsfu33OZMJ আরও তথ্য জন্য। নিম্নলিখিত পদ্ধতিটি আমার জন্যও কাজ করে: Def get_prep_value (স্ব, মান): যদি মান == "": #if Jjango '' স্ট্রিং সংরক্ষণ করার চেষ্টা করে, db কিছুই না প্রেরণ করুন (NULL) আর কিছুই নয়: ফেরতের মান # অন্যদিকে, কেবল মানটি পাস করুন