我有以下型号:
class Member(models.Model):
name = models.CharField(max_length=255)
class Location(models.Model):
name = models.CharField(max_length=255)
member = models.ForeignKey(Member)
class Department(models.Model):
name = models.CharField(max_length=255)
member = models.ForeignKey(Member)
class LocationInvite(models.Model):
sent = models.BooleanField(default=False)
location = models.ForeignKey(Location)
def send(self):
location = self.location.member
email = self.location.member.email
send_populated_email(location, email)
self.sent = True
我需要让部门也有邀请。
我正在考虑将 LocationInvite 更改为 Invite 并使其成为抽象基类。然后我将创建 2 个具体的实现 LocationInvite 和 DepartmentInvite。我将位置外键移动到 LocationInvite 类。
那么我将如何重构邀请的发送方法以适应提取位置或部门的电子邮件地址,具体取决于具体实现?
我的问题是,使用抽象基类是一个很好的架构举措吗?考虑到 send 方法的约束,我将如何实现它?
这些记录将达到数百万,这就是我没有提到使用通用外键的原因。除非这不是问题?