gpt4 book ai didi

django - 我可以将经理添加到多对多关系中吗?

转载 作者:行者123 更新时间:2023-12-02 07:04:40 24 4
gpt4 key购买 nike

我有两个模型以某种方式与“直通”表具有多对多关系?

class Bike(models.Model):
nickname = models.CharField(max_length=40)
users = models.ManyToManyField(User, through='bike.BikeUser')

BikeUser 类

class BikeUser(models.Model):
bike = models.ForeignKey(Bike)
user = models.ForeignKey(User)
comment = models.CharField(max_length=140)

我想向 Bike 类添加与用户合作的功能,是否有最佳实践方法可以做到这一点。我想避免向 Bike 类添加太多方法,而希望有某种管理器来处理

类似于:

bike.bikeusers_set.commonMethod()

bike.bikeusers.commonMethod()

实现这一目标的最佳方法是什么?

最佳答案

获得 BikeUser 模型后,您可以向该模型添加自定义管理器。

类似于:

class BikeUserManager(models.Manager):
def commonMethod():
pass

class BikeUser(models.Model):
bike = models.ForeignKey(Bike)
user = models.ForeignKey(User)
comment = models.CharField(max_length=140)
objects = BikeUserManager()

但您只能从 BikeUser 模型中使用它:

BikeUser.objects.commonMethod()

您想要的是将此管理器用作相关管理器: http://docs.djangoproject.com/en/dev/topics/db/managers/#controlling-automatic-manager-types

use_for_lated_fields=True添加到管理器类中。

class MyManager(models.Manager):
use_for_related_fields = True

关于django - 我可以将经理添加到多对多关系中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3845851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com