Python Django 2:Can';t导入模型并保存它

Python Django 2:Can';t导入模型并保存它,python,django-2.0,Python,Django 2.0,我无法从其他应用程序导入我的模型。我已经查过了,试过了,但没用 事件/模型.py class Registration(models.Model): category = models.ForeignKey(Category, on_delete=models.CASCADE) user = models.ForeignKey(User, on_delete=models.CASCADE) team = models.CharField(max_length=50, bl

我无法从其他应用程序导入我的模型。我已经查过了,试过了,但没用

事件/模型.py

class Registration(models.Model):
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    team = models.CharField(max_length=50, blank=True)
    date_created = models.DateTimeField(auto_now_add=True)

    def save(self, *args, **kwargs):
        payment = Payment.objects.create(registration=self)
        super().save(*args, **kwargs)
import uuid

from django.db import models
from django.utils import timezone

from events.models import Registration  # THIS WONT WORK


def _create_uuid():
    return uuid.uuid1()

def _get_uuid():
    return _create_uuid()

class Payment(models.Model):
    uuid = models.CharField(max_length=1, default=_get_uuid)
    paid = models.BooleanField(default=False)
    registration = models.ForeignKey(Registration, on_delete=models.CASCADE)
当我运行python manage.py makemigrations时,我得到了这个结果

错误

File "C:\Users\Rubber\ems\events\models.py", line 5, in <module>
   from payments.models import Payment   
File "C:\Users\Rubber\ems\payments\models.py", line 6, in <module>
   from events.models import Registration 
ImportError: cannot import name 'Registration'

我做错了什么?

您有一个循环导入。在这种情况下,可以通过删除
注册
导入并使用字符串来避免:

class Payment(models.Model):
    registration = models.ForeignKey('events.Registration', on_delete=models.CASCADE)

另一个选项是将
Payment.objects.create()
代码移动到。请注意,您当前的
save()
方法在每次保存注册时都会创建一个
Payment
,这可能不是您想要的。

我以前尝试过这个方法,现在禁用save(),以防止由于未保存的相关对象“注册”而丢失数据。请重新读取错误。我切换super().save()和payments.objects.create()。作品谢谢你的帮助。