Ich habe viele Beiträge gelesen, auf denen OneToOneField, ManyToManyField und Foreign Key sind, aber sie sind nicht sehr klar. Ich bin sehr neu in Django und Python-Programmierung, derzeit versuche ich, Modelle zu entwickeln. Kann mir jemand in einfacher Sprache erklären, vorzugsweise mit Beispiel, was sie sind?Django OneToOneField, ManyToManyField, Fremdschlüssel
Antwort
eine Datenbank Stellen Sie sich vor, die Ihre Büchersammlung speichert:
from django.db import models
class Place(models.Model):
address = models.CharField(max_length=50)
country = models.CharField(max_length=50)
class Publisher(models.Model):
name = models.CharField(max_length=30)
place = models.OneToOneField(Place, primary_key=True)
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
class Book(models.Model):
title = models.CharField(max_length=100)
publisher = models.ForeignKey(Publisher)
authors = models.ManyToManyField(Author)
One-to-many/Foreign Key
Alle Book
hat ein Publisher
, aber ein Publisher
möglicherweise mehrere Bücher veröffentlicht haben. Sie stehen daher in einer Eins-zu-Vielen-Beziehung (Buch zu Verlag).
One-to-one
Jeder Publisher
befindet sich in einem Place
befindet, und jeder Place
kann nur ein Publisher
halten. Daher stehen sie in einer Eins-zu-Eins-Beziehung. Sie könnten einfach die Place
Informationen (address
und country
) mit dem Publisher
Modell in eine Tabelle legen, aber manchmal ist es bevorzugt, separate Modelle zu haben. Wenn Sie beispielsweise die Place
für jede Publisher
nicht kennen, brauchen Sie nicht viel Platz mit leeren Zeilen zu belegen.
Many-to-many
Jeden Book
auch eine oder mehr Author
s. Ein Author
könnte jedoch mehrere Book
s geschrieben haben, so dass sie sich in einer Viele-zu-Viele-Beziehung befinden.
Wenn Sie noch etwas Unterstützung benötigen, schlage ich vor, einen Blick auf the model chapter of the Django Book nehmen.
- 1. Django: select_related mit ManyToManyField
- 2. django ManyToManyField und on_delete
- 3. ValueError in ManyToManyField | Django
- 4. Django Modell Feld von OneToOneField
- 5. Django: InlineAdmin und ManyToManyField mit ‚bis‘
- 6. Django - ManyToManyField wird in Formular
- 7. Django (1.2) Formulare: ManyToManyField Hilfetext
- 8. Django Custom Manager mit ManyToManyField
- 9. Django Modell kollidiert bei Verwendung von OneToOneField
- 10. Django: Modell mit Benutzer OneToOneField nicht Standardwert
- 11. OneToOneField und Löschen
- 12. Django Modell benutzerdefinierte speichern mit ManyToManyField Problem
- 13. Primärschlüssel Probleme mit ManyToManyField Beziehungen in Django
- 14. bestellen django queryset von ManyToManyField = Wert
- 15. Django Models - Problem mit ManyToManyField hinzufügen() -Methode
- 16. Django: Zeige ein ManyToManyField in einer Vorlage?
- 17. Django: Unterschied zwischen ForeignKey und ManyToManyField
- 18. django serialisiert Fremdschlüssel Objekte
- 19. django Fremdschlüssel speichern
- 20. Django und Fremdschlüssel
- 21. Django Fremdschlüssel Abfragen
- 22. Django Shortcut Fremdschlüssel
- 23. Django: Fremdschlüssel zu Benutzerfehler
- 24. Django Modellvererbung und Fremdschlüssel
- 25. Fremdschlüssel Django Modell
- 26. Django Fremdschlüssel Beziehung
- 27. Zurücksetzen Datenbanken mit mit OneToOneField Kreuzung verschiedener Anwendungen in Django
- 28. Überprüfen Sie, ob OneToOneField None in Django ist
- 29. Django: ein OneToOneField automatisch vom * verwandten * Modell speichern?
- 30. Django: Wie benutzt man select_related für ein OneToOneField?
Ausgezeichnete Antwort. Ich würde dem OP auch empfehlen, über Datenbankbeziehungen zu lesen, da sie direkt diese Django-Felder anwenden. Probieren Sie dies - http://code.tutsplus.com/articles/sql-for-beginners-part-3-database-relationships-net-8561 –
Das hat alles für mich geklärt! Vielen Dank! Entschuldigung, ich habe nicht genug Reputation, um deine Antwort aufzufüllen =/ – Rjzheng
@Rjzheng Glücklich zu helfen. (: – Banana