【发布时间】:2014-05-21 15:50:07
【问题描述】:
我有两个模型。一个是Subscriber,为了节省时间,我会根据已分配给该池的订阅者数量来分配一个池:
class Subscriber(models.Model):
pool = models.ForeignKey(Pool)
interface = models.CharField(max_length=30)
class Pool(models.Model):
name = models.CharField(max_length=50)
假设只有 4 个Subscribers 可以分配给一个池。这就是为什么我要覆盖订阅者的 save() 方法:
def save(self, *args, **kwargs):
if not self.pk:
#Look for a free Pool among the available ones
for pool in Pool.objects.all():
if pool.subscriber_set.count() < 4:
self.pool = pool
print "Assigned pool: %s" % pool.name
super(Subscriber, self).save(*args, **kwargs)
它运行良好,直到我用完池(所有池都分配了 4 个用户)。我应该如何从 Django 管理员处处理这个问题?理想情况下,我想向用户显示一些错误消息,以便他可以创建更多池。
我宁愿不将池分配代码移动到表单的 clean() 方法,因为可能还会从不同的界面创建用户,而不是管理 GUI。
有什么想法吗?
非常感谢!
【问题讨论】:
标签: django django-admin