Tôi đã đọc nhiều bài viết về OneToOneField, ManyToManyField và Foreign Key là gì nhưng chúng không rõ ràng lắm. Tôi rất mới để Django và lập trình python, hiện đang cố gắng để phát triển các mô hình. Ai đó có thể giải thích cho tôi bằng ngôn ngữ đơn giản, tốt nhất là với ví dụ, họ là ai?Django OneToOneField, ManyToManyField, Khóa ngoài
Trả lời
Hãy tưởng tượng một cơ sở dữ liệu, mà các cửa hàng bộ sưu tập sách của bạn:
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/Ngoại chính
Mỗi Book
đã một Publisher
, nhưng một Publisher
có thể đã xuất bản nhiều cuốn sách. Vì vậy, họ đang ở trong mối quan hệ một-đến-nhiều (book-to-publisher).
One-to-one
Mỗi Publisher
nằm ở một Place
, và mỗi Place
chỉ có thể giữ một Publisher
. Vì vậy, họ đang ở trong một mối quan hệ một-một. Bạn chỉ có thể đã đặt thông tin Place
(address
và country
) với mô hình Publisher
trong một bảng, nhưng đôi khi được ưu tiên có các mô hình riêng biệt. Ví dụ: nếu bạn không biết số Place
cho mỗi Publisher
, bạn không cần chiếm nhiều không gian với các hàng trống.
Nhiều-nhiều
Mỗi Book
cũng có một hoặc nhiều Author
s. Tuy nhiên, một Author
có thể đã viết nhiều Book
s, do đó, họ đang ở trong một mối quan hệ nhiều-nhiều.
Nếu bạn vẫn cần một số hướng dẫn, tôi khuyên bạn nên xem the model chapter of the Django Book.
- 1. ModelForm với OneToOneField ở Django
- 2. Django: select_related với ManyToManyField
- 3. Django quản ManyToManyField
- 4. django ManyToManyField và on_delete
- 5. bối rối về django ForeignKey, manytomanyfield, inlineformset_factories
- 6. Django- Lấy mô hình khóa nước ngoài
- 7. Kiểm tra nếu OneToOneField là None trong Django
- 8. Django OneToOneField - tôi nên đặt mô hình nào?
- 9. Sự khác biệt giữa Khóa Ngoại (Người dùng, duy nhất = Đúng) và OneToOneField
- 10. nội dung hiển thị django của một manytomanyfield
- 11. Django: Làm thế nào để lưu dữ liệu vào ManyToManyField?
- 12. Hiển thị ManyToManyField làm Hộp kiểm trong Django Admin
- 13. Xác định đơn đặt hàng cho ManyToManyField với django
- 14. Cho phép null bằng khóa ngoài cho người dùng. Django
- 15. Django Model Auto Increment Primary Key Dựa trên khóa ngoài
- 16. "Thêm mới" vào trường khóa ngoài trong django modelform
- 17. Nối tiếp các đối tượng khóa ngoài ở Django
- 18. Django mô hình một khóa ngoài cho nhiều bảng
- 19. Cách thức truy cập khóa ngoài của Django hoạt động
- 20. django quản trị sắp xếp danh sách trường khóa ngoài
- 21. django quản trị dữ liệu trường ngoài khóa chính thêm
- 22. Django - truy cập quản lý chìa khóa nước ngoài từ các mẫu django
- 23. update_or_create với ManyToManyField
- 24. Mô hình Django u'id 'gặp sự cố khi sử dụng OneToOneField
- 25. khóa chính/khóa ngoài trong uml
- 26. ScalaQuery nhiều khóa chính và khóa ngoài
- 27. IntegrityError: vi phạm khóa ngoài khi xóa
- 28. Ánh xạ khóa ngoài cho một khóa khác ngoài khóa chính
- 29. Django - Phím nước ngoài trong Đồ đạc
- 30. Xóa đối tượng liên quan qua OneToOneField
Câu trả lời hay. Tôi cũng sẽ đề nghị OP để đọc về các mối quan hệ cơ sở dữ liệu, khi họ áp dụng trực tiếp các trường Django này. Hãy thử điều này - http://code.tutsplus.com/articles/sql-for-beginners-part-3-database-relationships--net-8561 –
Điều này xóa tất cả mọi thứ cho tôi! Cảm ơn nhiều! Xin lỗi, tôi không có đủ danh tiếng để trả lời câu trả lời của bạn =/ – Rjzheng
@Rjzheng Chúc mừng bạn. (: – Banana