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

  • AmeriiK_HD

    AmeriiK_HD

    16 AĞUSTOS 2012
  • Fubar Protocol

    Fubar Protoc

    21 AĞUSTOS 2010
  • jbignacio

    jbignacio

    13 Mart 2006