SORU
21 Temmuz 2009, Salı


büyük alma models.py onu kırmak için en iyi yolu nedir?

Amirim yol tarifi: "models.py herhangi bir mantık koyarak önlemek için istiyorum. Bundan böyle, hadi veritabanına erişmek için sadece sınıflar olarak kullanan ve modeller sınıfları kullanmak, ya da onları saran dış sınıfların tüm mantık devam et."

Bu gitmek için yanlış bir yol olduğunu hissediyorum. Bu modeller dışında mantık sadece dosyanın küçük tutmak için tutmak kötü bir fikir olduğunu hissediyorum. Eğer mantık modeli iyi ise, bu gerçekten de dosya boyutu ne olursa olsun, nereye gitmesi gerektiğini.

Yani orada sadece içerir kullanımı basit bir yolu var mı? PHP-konuş, biz sadece models.py dahil Danışmanı öneriyorum() diğer yerlerden modeli sınıfları. Kavramsal olarak, bu izin modeller var mantık istiyoruz, henüz tutmak dosya boyutu aşağı) artan sayıda dosya (hangi yol daha az revizyon kontrolü sorunları gibi çatışmalar, vb.).

, Models.py dosyadan model sınıfları kaldırmak, ama yine de modelleri Django araçları ile çalışmak için basit bir yol var mı? Ya da, orada bir "" models.py dosya? büyük genel sorunu tamamen farklı ama zarif bir çözüm. Herhangi bir giriş duyacağız.

CEVAP
21 Temmuz 2009, Salı


Model sınıfları yöntemleri modeli üzerinde çalışması içeren doğal bir şeydir. Eğer ben bir Kitap modeli, bir yöntem book.get_noun_count(), ait olduğu yerde--istemediğim için yazıyorum "get_noun_count(book)", sürece bu yöntem aslında özünde ait olan başka bir paket. Eğer Amazon API erişmek için bir paket varsa (örneğin olabilir, "get_amazon_product_id(book)".) ile

Django belgeleri tek bir dosyada modelleri koyarak önerdiğinde pek bir şey söyleyememiş, ve uygun bir subpackage içine en başından itibaren bir kaç dakika bölmek için nasıl anlamaya aldım.

site/models/__init__.py
site/models/book.py

__init__.py gibi görünüyor:

from .book import Book

hala "sitesinden.yazabilirim yani". model alma Kitabı


Aşağıdaki tek sürüm 1.7, bakın Django önce için gereklidir https://code.djangoproject.com/ticket/3591

Tek numara olan ihtiyacın açıkça ayarlamak için her model uygulama, bir hata yüzünden Django: varsayar uygulama adı üçüncü ve son giriş modeli yolda. "site.modelleri."Sonuçlar "site doğru; "site.", kitap modelleri.kitap."Uygulama adı olduğunu "modeller". kitap Bu Django tarafında bir çok kötü kesmek; muhtemelen bir önek maç için yüklü uygulamalar listesi arama.

class Book(models.Model):
    class Meta: app_label = "site"

Muhtemelen bir temel sınıf kullanın veya bu genelleme yapmak metaclass olabilir, ama henüz rahatsız değil.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Outler

    Adam Outler

    19 EKİM 2006
  • Amir Parmar

    Amir Parmar

    25 Kasım 2010
  • vgeller1

    vgeller1

    22 Kasım 2009