[英]Get Python type of Django's model field?
如何獲取 Django 模型的字段類的相應 Python 類型?
from django.db import models
class MyModel(models.Model):
value = models.DecimalField()
type(MyModel._meta.get_field('value')) # <class 'django.db.models.fields.DecimalField'>
我正在尋找如何獲得字段值的相應 python 類型 - 在這種情況下為decimal.Decimal
。
任何的想法 ?
ps 我試圖用字段的default
屬性解決這個問題,但它可能不適用於所有沒有定義字段默認值的情況。
我不認為你可以在那里以編程方式決定實際的 python 類型。 部分原因是python的動態類型。 如果您查看用於將值轉換為 python 對象的文檔,則字段沒有硬預定義類型:您可以編寫一個自定義字段,根據數據庫值返回不同類型的對象。 模型字段的文檔指定了每個字段類型對應的 Python 類型,因此您可以“靜態地”執行此操作。
但是為什么需要提前知道 Python 類型才能序列化它們呢? 序列化模塊應該為您執行此操作,只需將您需要序列化的對象扔給它們即可。 Python 是一種動態類型語言。
一個丑陋的選擇是檢查字段的 repr():
if 'DecimalField' in repr(model._meta.get_field(fieldname)):
return decimal.Decimal
else:
...
但是,您必須針對所有類型單獨進行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.