Apakah ada cara sederhana untuk mendapatkan jenis atribut dokumen yang diberikan? Saya memiliki nama atribut, dan saya ingin memeriksa apakah itu angka. Misalnya, jika inputnya adalah string "harga", saya harus mengembalikan True, karena nilainya akan berupa angka.

Untuk saat ini saya mencoba mengambil dokumen pertama dengan nilai bukan nol pada atribut yang diberikan, tetapi saya tidak berhasil dalam hal ini, dan saya ingin tahu apakah ada cara yang lebih langsung untuk mendapatkan jenis nilainya.

0
Biu 19 November 2020, 21:40

1 menjawab

Jawaban Terbaik

Saya yakin peluang terbaik Anda adalah memeriksa jenis bidang Dokumen dan mempertahankan pemetaan antara jenis bidang (mis. StringField) dan tipe aktual (mis. str).

Berikut ini akan memberi Anda gambaran tentang cara mencapainya:

class TestDocument(Document):
    s = StringField()
    i = IntField()

assert isinstance(TestDocument.s, StringField)

def get_field_type(docCls, attr):
    field = getattr(docCls, attr)
    mapping = {StringField: str, IntField: int}
    return mapping[type(field)]

assert get_field_type(TestDocument, 's') == str
assert get_field_type(TestDocument, 'i') == int
0
bagerard 21 November 2020, 21:02