Я столкнулся с такой ошибкой при использовании django фильтра рамки отдыха.
Я хочу вернуть 0, возможно ли это исправить?
# http://localhost:8000/api/v1/target/?project=TEST-00002
# RESPONSE 400 Bad Request
{
"project": [
"Select a valid choice. That choice is not one of the available choices."
]
}
Определения и контрольные примеры приведены ниже.
## Definition
class Project(models.Model):
project_number = models.CharField(max_length=255, unique=True, null=False, blank=False)
project_name = models.CharField(max_length=255, null=False, blank=False)
class Target(models.Model):
project = models.ForeignKey(Project,
db_column='project_number',
to_field='project_number',
on_delete=models.CASCADE,
null=False,
default=None)
target_name = models.CharField(max_length=255, null=False, default='')
comment = models.TextField(default='', blank=True, null=False)
class TargetViewSet(viewsets.ModelViewSet):
queryset = Target.objects.all()
serializer_class = TargetSerializer
filter_backends = (filters.DjangoFilterBackend,)
filterset_fields = ['id', 'project']
class TargetSerializer(serializers.ModelSerializer):
class Meta:
model = Target
fields = '__all__'
read_only_fields = ('created_at', 'updated_at', 'delete_at')
## TEST DATA
{
"hits": {
"total": 2,
"next": null,
"previous": null,
"hits": [
{
"id": 1,
"project": "TEST-00001",
"target_name": "bob"
},
{
"id": 2,
"project": "TEST-00001",
"target_name": "mary"
}
]
}
}
## TEST
## http://localhost:8000/api/v1/target/?project=TEST-00002
## 400 bad request
{
"project": [
"Select a valid choice. That choice is not one of the available choices."
]
}
## http://localhost:8000/api/v1/target/?project=TEST-00001
## no problem
{
"hits": {
"total": 2,
"next": null,
"previous": null,
"hits": [
{
"id": 1,
"project": "TEST-00001",
"target_name": "bob"
},
{
"id": 2,
"project": "TEST-00001",
"target_name": "mary"
}
]
}
}
## http://localhost:8000/api/v1/target/?id=1
## no problem
{
"hits": {
"total": 1,
"next": null,
"previous": null,
"hits": [
{
"id": 1,
"project": "TEST-00001",
"target_name": "bob"
}
]
}
}
## http://localhost:8000/api/v1/target/?id=0
## no problem(But why is project useless?)
{
"hits": {
"total": 0,
"next": null,
"previous": null,
"hits": []
}
}
## http://localhost:8000/api/v1/target/?project=TEST-00003
## no problem
{
"hits": {
"total": 0,
"next": null,
"previous": null,
"hits": []
}
}
Насколько я понимаю, это событие происходит при следующих условиях.
- сбой: не существует код (TEST-00002) в родительском.
- success: существует код (TEST-00003) в родительском.
спасибо.