Python 如何创建带有外键的模型?
我正在使用创建聊天演示,我不确定如何创建带有相关字段的模型 使用下面的代码,每次调用javascript中的Python 如何创建带有外键的模型?,python,django,sockets,swampdragon,Python,Django,Sockets,Swampdragon,我正在使用创建聊天演示,我不确定如何创建带有相关字段的模型 使用下面的代码,每次调用javascript中的createMessage函数时都会发生错误。我收到的唯一错误来自websocket输出:c[3001,“连接中止”]。python控制台上没有任何输出可以解释这个错误 有人能帮我理解如何创建一条消息,相关字段为用户 型号: 序列化程序: 路线: Javascipt: 要求 django==1.7.6 沼泽龙==0.4.1.2 沼泽龙认证==0.1.3 回答我自己的问题:这并不像我预期的
createMessage
函数时都会发生错误。我收到的唯一错误来自websocket输出:c[3001,“连接中止”]
。python控制台上没有任何输出可以解释这个错误
有人能帮我理解如何创建一条消息
,相关字段为用户
型号:
序列化程序:
路线:
Javascipt:
要求
- django==1.7.6
- 沼泽龙==0.4.1.2
- 沼泽龙认证==0.1.3
- 回答我自己的问题:这并不像我预期的那样内置到框架中。您需要在
get\u initial
方法中实例化路由器中的相关模型。然后,这些将被传递到序列化程序,并将正确创建消息
模型
路线
Javascript
序列化程序
from django.contrib.auth.models import User
from django.db import models
from swampdragon.models import SelfPublishModel
from .serializers import MessageSerializer
class Message(SelfPublishModel, models.Model):
serializer_class = MessageSerializer
user = models.ForeignKey(User, related_name='messages')
body = models.TextField(blank=True)
from swampdragon.serializers.model_serializer import ModelSerializer
from django.contrib.auth.models import User
class UserSerializer(ModelSerializer):
class Meta:
model = User
publish_fields = ('id', 'username')
update_fields = ('first_name', 'last_name', )
class MessageSerializer(ModelSerializer):
user = UserSerializer
class Meta:
model = b'chat.Message'
publish_fields = ('body', 'user', )
update_fields = ('body', 'user', )
from swampdragon import route_handler
from swampdragon.route_handler import ModelRouter, BaseRouter
from .models import Message
from .serializers import MessageSerializer, UserSerializer
class MessageRouter(ModelRouter):
route_name = 'message'
serializer_class = MessageSerializer
model = Message
include_related = [UserSerializer, ]
def get_object(self, **kwargs):
return self.model.objects.get(pk=kwargs['id'])
def get_query_set(self, **kwargs):
return self.model.objects.all()
route_handler.register(MessageRouter)
...
createMessage: function(message){
var data = {
user: 1,
body: message
};
swampdragon.create('message', data, function (context, data) {
console.log('MessageStore: onCreate success.', context, data);
}, function (context, data) {
console.log('MessageStore: onCreate failed.', context, data);
});
},
...
class MessageRouter(ModelRouter):
route_name = 'message'
serializer_class = MessageSerializer
model = Message
include_related = [UserSerializer, ]
def get_initial(self, verb, **kwargs):
user = User.objects.get(pk=kwargs['user_id'])
return {'user': user}
def get_object(self, **kwargs):
return self.model.objects.get(pk=kwargs['id'])
def get_query_set(self, **kwargs):
return self.model.objects.all()
...
createMessage: function(message){
var data = {
user_id: 1,
body: message
};
swampdragon.create('message', data, function (context, data) {
console.log('MessageStore: onCreate success.', context, data);
}, function (context, data) {
console.log('MessageStore: onCreate failed.', context, data);
});
},
...
class MessageSerializer(ModelSerializer):
user = UserSerializer
class Meta:
model = b'chat.Message'
publish_fields = ('body', 'user', )
update_fields = ('body', )