仅与模型有关的循环导入错误似乎有很多问题,但我的模型和信号回调似乎也遇到了类似的问题。我对 Django 还很陌生,所以很可能这与我没有正确构建我的应用程序有关。一些代码:
徽章/models.py:
from django.db import models
from django.contrib.auth.models import User
from datetime import datetime
from tasks import badgeaward_callback
class Award(models.Model):
user = models.ForeignKey(User)
description = models.TextField(blank=False)
award_date = models.DateTimeField('date awarded',default=datetime.now)
def __unicode__(self):
return self.description
class Points(models.Model):
POINT_TYPES = (
('signup', 'Sign up'),
...etc...
)
user = models.ForeignKey(User)
points = models.IntegerField()
date = models.DateTimeField('date created',default=datetime.now)
description = models.TextField(blank=False)
data = models.TextField(blank=True)
type = models.CharField(max_length=20,choices=POINT_TYPES)
def __unicode__(self):
return self.description
models.signals.post_save.connect(badgeaward_callback, sender=Award)
徽章/tasks.py
from badges.models import Points
def badgeaward_callback(sender, **kwargs):
award = kwargs.get('award')
p = Points()
p.points = 100
p.type = 'badgeawarded'
p.description = award.description
p.user = award.user
p.save()
因此,模型正在导入 badaward_callback(这是我得到的错误:无法导入名称 badgeaward_callback),但任务正在导入 Points 模型 - 我认为这是我的错误的根本原因。
非常感谢任何关于我应该如何构建我的应用程序的建议。我应该把我的badgesaward_callback 放到models.py 中吗?这行得通(好吧,没有更多错误),但是当我以后可能会添加更多回调函数时,这是一个好方法吗?