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

  • Ben Vivona

    Ben Vivona

    24 Ocak 2010
  • bunnyboxx

    bunnyboxx

    17 NİSAN 2008
  • Greater Than Gatsby Photoshop Actions & Lightroom Presets

    Greater Than

    11 ŞUBAT 2013