我有3个模型User,Lesson,Company
class User(models.Model):
pass
class Company(models.Model):
pass
class Lesson(models.Model):
user = models.ForeignKey(User)
company = models.ForeignKey(Company)
如何为两家公司添加一课
答案 0 :(得分:3)
如果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)
答案 1 :(得分:0)
您应该将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
attribut:
lesson.company_set.all()
您现在也可以为不同的公司分配一个课程:
company1.lesson = lesson
company2.lesson = lesson
答案 2 :(得分:0)
您可以通过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
<{1}}
related_name
从现在起你就可以使用它了:
class Lesson(models.Model):
company = models.ForeignKey(Company, related_name='lessons')