Django模型-如何告诉Django寻找自定义ID而不是默认ID

问题描述 投票:0回答:1

我有两个表,Team和Voting。对于我的Team表,我使用了一个名为“ id”的自定义ID。在我的投票表中,我有一个名为“ team”的外键来引用Team表。我还将“团队​​”属性设为主键。

问题是,当我进入投票表的注册路线时,它给我一个属性错误“ Team”对象没有属性'team_id“

[我想是因为默认情况下Django在我的Team表中查找的是名为“ team_id”的ID,而不是我的自定义ID为“ id”。

我该如何解决?

model.py

from django.db import models

class Team(models.Model):
    id = models.CharField(max_length=15, default="", primary_key=True)
    name = models.CharField(max_length=30)


class Voting(models.Model):
    team = models.ForeignKey(Team, on_delete=models.CASCADE, primary_key=True)
    thumbUp = models.IntegerField(default=0)
    thumbDown = models.IntegerField(default=0)

serializers.py

from rest_framework import serializers
from teams.models import (
    Team,
    Voting
)


class TeamSerializer(serializers.ModelSerializer):
    class Meta:
        model = Team
        fields = "__all__"


class VotingSerializer(serializers.ModelSerializer):
    # team = TeamSerializer()

    class Meta:
        model = Voting
        fields = "__all__"

urls.py

from rest_framework import routers
from .api import (
    TeamViewSet,
    VotingViewSet
)

router = routers.DefaultRouter()
router.register("api/teams", TeamViewSet, "teams")
router.register("api/voting", VotingViewSet, "voting")

api.py

from teams.models import Team
from rest_framework import viewsets, permissions
from .serializers import (
    TeamSerializer,
    VotingSerializer
)

# Team ViewSet
class TeamViewSet(viewsets.ModelViewSet):
    queryset = Team.objects.all()
    permission_classes = [permissions.AllowAny]
    serializer_class = TeamSerializer


# VotingSerializer ViewSet
class VotingViewSet(viewsets.ModelViewSet):
    queryset = Team.objects.all()
    permission_classes = [permissions.AllowAny]
    serializer_class = VotingSerializer
django reactjs
1个回答
0
投票
class VotingViewSet(viewsets.ModelViewSet):
    queryset = Team.objects.all() <-- here is the problem, it should be Voting.objects.all()
© www.soinside.com 2019 - 2024. All rights reserved.