[英]django model ForeignKey relation
我有3個模型用戶,課程,公司
class User(models.Model):
pass
class Company(models.Model):
pass
class Lesson(models.Model):
user = models.ForeignKey(User)
company = models.ForeignKey(Company)
如何為兩家公司加一堂課
如果一個Company
有多個Lesson
並且您還希望一個Lesson
具有多個Company
,則應使用ManyToManyField
class Lesson(models.Model):
user = models.Foreignkey(User)
companies = models.ManyToManyField(Company)
c1 = Company()
c1.save()
c2 = Company()
c2.save()
l1 = Lesson()
l1.companies.add(c1, c2)
您應該將ForeignKey
放入Company
模型:
class Company(models.Model):
lesson = models.Foreignkey(lesson)
創建一個新的公司對象,並將其添加到課程中:
>>> c1 = Comapany(attr="blah", attr2="foo")
>>> l1.comapany_set.add(c1)
您可以在課程中添加公司對象列表
>>> l1.comapany_set.add(*company_objs)
現在,您可以使用company_set
屬性訪問與特定課程相關的company_set
:
lesson.company_set.all()
您現在還可以為不同的公司分配一課:
company1.lesson = lesson
company2.lesson = lesson
您可以通過shell執行此操作: python manage.py shell
a = Company.objects.first()
b = Company.objects.last()
c = Lesson.objects.first()
a.lesson_set.add(c)
b.lesson_set.add(c)
你也可以使用: lessons
,而不是: lesson_set
如果更改型號: related_name
class Lesson(models.Model):
company = models.ForeignKey(Company, related_name='lessons')
從現在開始,您可以像這樣使用它:
a.lessons.add(c)
b.lessons.add(c)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.