SORU
3 AĞUSTOS 2011, ÇARŞAMBA


Nasıl Django içinde Bir-Çok bir ilişki ifade etmek için

Şu an benim Django modelleri tanımlamaya çalışıyorum ve OneToManyField model alan bir tip olmadığını fark ettim. Bunu yapmak için bir yolu vardır eminim, ne kaçırıyorum bilmiyorum. Ben aslında şöyle bir şey var:

class Dude(models.Model):
    numbers = models.OneToManyField('PhoneNumber')

class PhoneNumber(models.Model):
    number = models.CharField()

Bu durumda, her Dude birden fazla PhoneNumbers, ama ilişkimiz tek yönlü olmalı, bu ihtiyacım yok ki PhoneNumber Dude yeri, kendiliğinden, ben olabilir çok farklı nesneleri kendi PhoneNumber örnekleri, gibi bir Business örneğin:

class Business(models.Model):
    numbers = models.OneToManyField('PhoneNumber')

Ben OneToManyField yok () modeli bu tür bir ilişkiyi temsil etmek yerine ne yapardın? Bir-çok ilişkisi bildirmek kadar kolay olduğu Uyku/JPA dan geliyorum:

@OneToMany
private List<PhoneNumber> phoneNumbers;

Django bu nasıl ifade edebilirim?

CEVAP
3 AĞUSTOS 2011, ÇARŞAMBA


İşlemek için Bir-Çok Django ForeignKey kullanmanız gereken ilişkiler.

ForeignKey belgelerine, son derece kapsamlı ve tüm sorulara cevap vermelidir:

https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey

Sizin örnekte mevcut yapı her Dostum bir numara, ve birden fazla Dudes ait her sayı () İş ile aynı olmasını sağlar.

Eğer ters ilişki istiyorsanız, PhoneNumber model, Dostum ve İş için bir iki ForeignKey alanları eklemek gerekir. Bu her sayı da bir erkeğe ya da bir İş, ait ve Ahbaplar ve İşletmeler birden fazla telefon sahibi olmak mümkün olması için izin verecek. Bundan sonra ne olabileceğini düşünüyorum.

class Business(models.Model):
    ...
class Dude(models.Model):
    ...
class PhoneNumber(models.Model):
    dude = models.ForeignKey(Dude)
    business = models.ForeignKey(Business)

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GamingAndTech

    GamingAndTec

    16 NİSAN 2013
  • ibebrent

    ibebrent

    23 Temmuz 2007
  • Nightmare2005

    Nightmare200

    14 Ocak 2007