SORU
3 Mayıs 2011, Salı


'django OneToOneField arasındaki fark ne ve ForeignKey?

Django OneToOneField ve ForeignKey arasındaki fark nedir?

CEVAP
5 Mayıs 2011, PERŞEMBE


OneToOneField(SomeModel) ForeignKey(SomeModel, unique=True) arasında bazı farklılıklar olduğunu fark etmek dikkatli olun. The Definitive Guide to Django: belirtildiği gibi

OneToOneField

Bire-bir bir ilişki. Kavramsal olarak, bu unique=True ForeignKey benzer ama "" ilişkinin tarafı doğrudan tek bir nesne döndürür. ters

Aksine OneToOneField "" ilişkisi, ForeignKey "" ilişki döndürür QuerySet. bir ters bir ters

Örnek

Eğer aşağıdaki iki model var, örneğin (tam model kodu):

  1. Car model OneToOneField(Engine) kullanır
  2. Car2 model ForeignKey(Engine2, unique=True) kullanır

python manage.py shell içinde aşağıdaki: idam

15* *Örnek

>>> from testapp.models import Car, Engine
>>> c = Car.objects.get(name='Audi')
>>> e = Engine.objects.get(name='Diesel')
>>> e.car
<Car: Audi>

unique=True Örnek ForeignKey

>>> from testapp.models import Car2, Engine2
>>> c2 = Car2.objects.get(name='Mazda')
>>> e2 = Engine2.objects.get(name='Wankel')
>>> e2.car2_set.all()
[<Car2: Mazda>]

Model Kodu

from django.db import models

class Engine(models.Model):
    name = models.CharField(max_length=25)

    def __unicode__(self):
        return self.name

class Car(models.Model):
    name = models.CharField(max_length=25)
    engine = models.OneToOneField(Engine)

    def __unicode__(self):
        return self.name

class Engine2(models.Model):
    name = models.CharField(max_length=25)

    def __unicode__(self):
        return self.name

class Car2(models.Model):
    name = models.CharField(max_length=25)
    engine = models.ForeignKey(Engine2, unique=True)

    def __unicode__(self):
        return self.name

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • echifitness

    echifitness

    9 Kasım 2008
  • SPBedition

    SPBedition

    24 HAZİRAN 2013
  • SRC RECORDS

    SRC RECORDS

    2 EKİM 2006