所以我正在用django django rest构建一个应用程序,并且我的模型中的很多领域都有一些问题,
在应用程序中,有两个模型通过多对多字段选项和版本进行连接。问题是我想过滤我的选项,并且仅获取与多个版本相关的选项,并且仅获取那些具有(Default True)的选项。 这是我的模特
class Option(models.Model):
Code_Option = models.CharField(max_length=20, primary_key=True)
Nom_Option = models.CharField(max_length=100)
option_Version = models.ManyToManyField(Version,through='Option_Version')
class Option_Version(models.Model):
option = models.ForeignKey(Option, on_delete=models.CASCADE)
version = models.ForeignKey(Version, on_delete=models.CASCADE)
Default = models.BooleanField(default = False)
class Version(models.Model):
Code_Version = models.CharField(max_length=20, primary_key=True)
Nom_Version = models.CharField(max_length=200)
Id_Modele = models.ForeignKey(Modele, on_delete=models.CASCADE, related_name='Version_set')
这是我尝试做的事情
class Option_defaut_Version(ListAPIView):
serializer_class = Option_Sereializer
def get_queryset(self):
id_version = self.kwargs['Id_Version']
//id version refers to Code_Version from Version (it's the PK) and I get it from the url ex: option/default/<srt:Id_Version>
return Option.objects.filter(option_Version__version = id_version).filter(option_Version__default = "True")
这是我的sereilasers:
class Option_Sereializer(serializers.ModelSerializer):
class Meta:
model = Option
fields = [
'Code_Option',
'Nom_Option',
'option_Version'
]
class Option_Version_Sereializer(serializers.ModelSerializer):
class Meta:
model = Option_Version
fields = [
'option',
'version',
'Default'
]
class Version_Sereializer(serializers.ModelSerializer):
class Meta:
model = Version
fields = [
'Nom_Version',
'Code_Version'
]
我也尝试过这个:
class option_version_default(ListAPIView):
serializer_class = Option_Version_Sereializer
def get_queryset(self):
return Option_Version.objects.all()
结果是一个错误:
AttributeError at /option/default/v1
type object 'Option_Version' has no attribute 'objects'
如果有人可以帮助我,我会很感激
ps:我还看到了很多其他问题和答案,也来自django django rest的文档,但这并没有帮助我