簡體   English   中英

django模型ForeignKey關系

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM