Django: إنشاء تركيبات دون تحديد مفتاح أساسي؟

StackOverflow https://stackoverflow.com/questions/1499898

  •  19-09-2019
  •  | 
  •  

سؤال

أحد الأشياء التي تحدث لي حول تركيبات Django هي أنه يجب عليك تحديد مفتاح كل نموذج أساسي. هل هناك أي طريقة لإنشاء تركيبات دون الحاجة إلى تحديد مفتاح أساسي لكل صف؟

هل كانت مفيدة؟

المحلول

استخدم "PK: NULL" بدلا من "PK: 1" (أو أيا كان)، والذي سيؤدي إلى تعيين PK على أي شيء، وعندما يتم حفظ الكائن مفتاح أساسي سيتم تعيين مفتاح أساسي.

يعمل هذا في Yaml على الأقل، أنا أظن أنك تستخدم ذلك إذا كنت تخلق باليد.

نصائح أخرى

يجب أن يكون لديك إلقاء نظرة على المفاتيح الطبيعية إذا كنت تسلي لإضافة العلاقة دون استخدام PK

https:/docs.djangoproject.com/en/dev/ref/django-admin/#dumpdata-app-label-app-label-app-label-model.

إذا قمت بتسهيل أمر Dumpdata Provident.py، فسترى بعض الخيارات المسماة - غير طبيعي وأجنبي، - الابتدائية. إذا نظرت إلى الإخراج، فيمكنك أن ترى أن الكائنات ملقاة دون استخدام المفاتيح الأساسية أو المفاتيح الأجنبية.

صديق لي اقترح fixture وحدة: http://farmdev.com/projects/fixture/

اضطررت إلى التعامل مع مخطط DB الحالي دون إمكانية تغييره، لذلك أحتاج إلى جدول مع مفتاح أساسي معقدة أو بدونه على الإطلاق - ولكن ليس مع التسلسل. ماذا فعلت:

لقد حددت PRIMART_KEY = TRUE في الحقل، والتي لا ينبغي أن تكون فريدة من نوعها على الإطلاق وكتبت طريقة مثالية:

class ContraIndicationsMedicines(models.Model):

    contra_indication = models.ForeignKey(ContraIndication, primary_key=True)
    medicine = models.ForeignKey(Medicine)

    def validate_unique(self, exclude=None): 
        pass

في الواقع، عملت من أجل احتياجاتي، ولكن هناك المزيد من عمليات التحقق من الصحة داخل django.contib.admin. * وليس كل الخطوط الواردة وغيرها مضمونة للعمل. كان هذا الحل الوحيد الذي يمكنني تنفيذه ... ((

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top