我正在尝试使用content_type对象为投票应用程序实现Django-Rest框架.我尝试使用serializers.py 的rest-framework-generic-relations.在我看来,错误可能在serializer.py/views.py中,但我是这个框架的新手,非常感谢你的帮助!
views.py:
class vote_detail(generics.RetrieveUpdateDestroyAPIView):
queryset = VotedItem.objects.all()
serializer_class = VoteSerializer(queryset, many=True)
Run Code Online (Sandbox Code Playgroud)
serializers.py:
from rest_framework import serializers
from .models import VotedItem
from posts.models import Post
from generic_relations.relations import GenericRelatedField
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ('title',)
class VoteSerializer(serializers.ModelSerializer):
"""
A `VotedItem` serializer with a `GenericRelatedField` mapping all possible
models to their respective serializers.
"""
voted_object = GenericRelatedField({
Post: PostSerializer(),
})
class Meta:
model = VotedItem
fields = ('user', 'voted_object')
Run Code Online (Sandbox Code Playgroud)
和models.py:
from __future__ import unicode_literals
from …Run Code Online (Sandbox Code Playgroud) 我一直在努力解决这个问题。
我不确定我错过了什么。
如果您有任何建议,请告诉我.. !!
模型.py:
co_manager = models.ManyToManyField(BookRunner, blank=True, null=True, related_name="deal_co_manager")
Run Code Online (Sandbox Code Playgroud)
视图.py:
class DealAdminViewSet(viewsets.ModelViewSet):
queryset = Deal.objects.all()
serializer_class = CreateDealSerializer
def create(self, request, format=None):
data = ...all things data here.
serializer = CreateDealSerializer(data=deal)
print serializer
co_manager_array = []
if serializer.is_valid():
serializer.save()
return Response(status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Run Code Online (Sandbox Code Playgroud)
序列化程序.py:
class CreateDealSerializer(serializers.Serializer):
co_manager = serializers.PrimaryKeyRelatedField(allow_null=True, many=True, queryset=BookRunner.objects.all(), required=False)
Run Code Online (Sandbox Code Playgroud) 我想修改我的django用户模型,以允许电话或电子邮件注册/登录。使用
USERNAME_FIELD = 'identifier'
Run Code Online (Sandbox Code Playgroud)
如果用户使用电话号码注册,则标识符将是其电话号码,或者是电子邮件,反之亦然。(如果有人认为我应该分配一些数字作为标识符,请告诉我。)
这是我的accounts.models:
from django.db import models
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager
from phonenumber_field.modelfields import PhoneNumberField
class UserManager(BaseUserManager):
def create_user(self, email, phone, password, **kwargs):
"""
Creates and saves a Account with the given email or phone and password.
"""
now = timezone.now()
identifier = ''
if not email:
if not phone:
raise ValueError('Users must have a valid email or phone address.')
else:
identifier = phone
if not phone:
if not email:
raise ValueError('Users must have a …Run Code Online (Sandbox Code Playgroud)