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

  • DroidModderX ROOT Master

    DroidModderX

    14 ŞUBAT 2011
  • HouseholdHacker

    HouseholdHac

    6 Kasım 2007
  • Jaclyn W

    Jaclyn W

    5 Mayıs 2006