【发布时间】:2020-06-12 12:29:17
【问题描述】:
我需要帮助过滤相关表中的字段。
我有两个模型 Kalas 和名称,其中一个(Kalas 模型)与基本 User 模型具有一对一的关系:
class Kalas(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
visitKalas = models.ForeignKey('self', on_delete=models.DO_NOTHING, blank=True, null=True)
isActive = models.BooleanField(default=True)
capacity = models.IntegerField(default=0)
fullName = models.CharField(max_length=100, default="default name")
phoneNumber = models.IntegerField()
address = models.CharField(max_length=40)
postal = models.CharField(max_length=50)
time = models.DateTimeField(auto_now_add=True)
lat = models.FloatField(default=0)
lng = models.FloatField(default=0)
def __str__(self):
return "user: %s, address: %s %s" % (self.user, self.address, self.postal)
class names(models.Model):
kalasID = models.ForeignKey(Kalas, on_delete=models.CASCADE, related_name='names')
name = models.CharField(max_length=30)
我已经做了一个嵌套的序列化器:
class NamesMapSerializer(serializers.ModelSerializer):
class Meta:
model = names
fields = ['name']
class KalasMapSerializer(serializers.ModelSerializer): #bruk denne hver gang man vil ha kalas og navn sammen
names = NamesMapSerializer(many=True, read_only=True)
class Meta:
model = Kalas
fields = ['id', 'fullName', 'capacity', 'lat', 'lng', 'names']
class MapSerializer(serializers.ModelSerializer):
kalas = KalasMapSerializer()
class Meta:
model = User
fields = ['username', 'kalas']
以及列出所有用户及其名称的视图:
class MapViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
permissions_classes = [permissions.AllowAny]
serializer_class = MapSerializer
但我不知道如何过滤,所以它只向有 kalas 的用户显示我激活了 kalas.isActive=True。
我已经尝试过了,但现在它检查的是用户模型 is_active 而不是 Kalas 的 isActive 字段:
class ActiveOnMap(generics.ListAPIView):
def get_queryset(self):
return User.objects.all().filter(isActive=True)
serializer_class = MapSerializer
请帮助我是新手:)
【问题讨论】:
标签: django django-rest-framework