ご理解ください。 REST APIを使用したdjangoアプリケーションがあります。すべて動作しますが、私はclient_idでフィルタを追加したいと思います。ここで問題が発生しました。Djangoのフィルタに関する問題
エラーメッセージ
invalid literal for int() with base 10: 'B123456'
があり、必ずこれが私のコードです
api.py
class DatabaseByClientList(RetrieveUpdateDestroyAPIView):
serializer_class = DatabaseSerializer
def get_queryset(self):
client_id = self.kwargs['client_id']
return Database.objects.filter(client_id=client_id)
models.py
class Database(models.Model):
def __unicode__(self):
return unicode(self.id)
class Meta:
ordering = ['db_name']
client_id = models.ForeignKey(ClientInfo)
db_name = models.CharField(max_length=30, blank=True)
db_host = models.CharField(max_length=30, blank=True)
db_user = models.CharField(max_length=30, blank=True)
db_pass = models.CharField(max_length=30, blank=True)
db_type = models.CharField(max_length=30, blank=True)
serializer.py
class DatabaseSerializer(serializers.ModelSerializer):
client_id = serializers.SlugRelatedField(queryset=ClientInfo.objects.all(),
slug_field='access_id')
class Meta:
model = Database
fields = ('id', 'client_id', 'db_name', 'db_host', 'db_user', 'db_pass', 'db_type')
何が問題なのですか。私はオフドキュメンテーションのようにすべてを作った。 おかげで、私は
return Database.objects.filter(client_id=client_id)
を試みたが、それはまた
追加CLIENTINFOクラス
class ClientInfo(models.Model):
def __str__(self):
return self.access_id
class Meta:
ordering = ['id']
access_id = models.CharField(max_length=15, unique=True, blank=True)
username = models.CharField(max_length=15, unique=True, blank=True)
password = models.CharField(max_length=15, unique=True, blank=True)
name = models.CharField(max_length=15, unique=True, blank=True)
あなたは 'ClientInfo'クラスを表示できますか? –
Self.kwargs ['client_id']、あなたにB123456を教えてください?フィルタにIDとIDを渡す必要があるためです。そして、このIDはintである必要があります。そしてint( 'B123456')はこのエラーを発生させます。 – Wilfried
モデルに 'name'フィールドはありません。 'filter by name'は何を意味しますか? – 2ps