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

  • Julia Graf

    Julia Graf

    6 Mayıs 2006
  • MW Technology

    MW Technolog

    28 EKİM 2009
  • Schmittastic Jr.

    Schmittastic

    19 Mart 2013