我有两个表,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
class VotingViewSet(viewsets.ModelViewSet):
queryset = Team.objects.all() <-- here is the problem, it should be Voting.objects.all()