在models.py中导入序列化程序:Django rest framwork

时间:2016-10-08 14:25:52

标签: python django serialization django-models django-rest-framework

我的一个模型类有以下模型,

NewsfeedModel.py

class NewsFeed(models.Model):

class NewsStatus(models.Model):

class NewsImage(models.Model):

这是我的serializers.py文件

from MadhaparGamApps.AppModels.NewsfeedModel import NewsFeed, NewsStatus, NewsImage

class NewsFeedSerializer(serializers.ModelSerializer):

到目前为止,它工作正常我可以在序列化器中使用模型。现在我必须在我的NewsfeedModel文件中使用序列化程序,所以我在NewsfeedModel文件中导入序列化程序,但它不允许我使用。

在日志中收到以下错误:

ImportError: cannot import name NewsFeed

有没有办法在模型类中使用序列化器?

2 个答案:

答案 0 :(得分:2)

解决循环导入的方法是从模块级别删除其中一个导入,并在使用它的方法中执行。

您还没有显示所有型号代码,所以我不知道您在哪里使用它,但如果它在save中,它将如下所示:

def save(self, **kwargs):
    import serializers
    # rest of method

答案 1 :(得分:0)

您似乎正在尝试将NewsFeed模型导入自身。

django-rest-framework的流程如下所示:

模型>串行器>图

完成序列化程序之后,您需要做的就是将模型和序列化程序导入到views.py文件中,您将在其中创建类/函数来处理对API的调用。这种用法的一个例子是:

views.py

from newsfeedmodel.py import *
from serializers.pi import *

class NewsFeedViewSet(viewsets.ModelViewSet):
    queryset = NewsFeed.objects.all()
    serializer_class = NewsFeedSerializer

我建议您阅读DRF文档以便更好地理解:
http://django-rest-framework.org