Django多对多关系中,如何从Course对象访问关联的Account对象?
当然可以从Course对象访问关联的Account对象!
你当前的模型定义中,Account和Course是多对多关联关系,Django会自动为反向关联生成默认的访问器。默认情况下,你可以通过course.account_set来获取所有与该Course关联的Account对象,代码示例如下:
course = Course.objects.get(id=1) # 获取所有关联的Account对象 related_accounts = course.account_set.all() # 若确认该Course仅关联一个Account,可使用get()获取单个对象 account_parent = course.account_set.get()
如果你觉得account_set这个默认名称不够直观,还可以在定义ManyToManyField时,通过related_name参数自定义反向关联的名称,比如修改Account模型:
class Account(models.Model): courses = models.ManyToManyField(Course, related_name="accounts")
修改后,你就能用更清晰的course.accounts来访问关联的Account对象了:
course = Course.objects.get(id=1) account_parent = course.accounts.get() # 或使用all()获取所有关联对象
需要注意的是:如果一个Course关联了多个Account,直接调用get()会抛出MultipleObjectsReturned异常,此时建议使用first()获取第一个关联对象,或用all()处理多对象场景。
内容的提问来源于stack exchange,提问作者Jude Maranga
相关产品推荐
相关产品推荐

