2012-06-06 54 views
1

我覺得這是一個非常簡單的問題,但我是Python的新手,並且我在同一時間學習Django。在Python/Django中的模型/對象實例的字典表示形式?

我的目標是創建一個字符串字典表示形式,即它是Django中Model的實例的字典格式化字符串,但是字符串。我怎麼能這樣做?是否有一個內置函數可以直接從對象的實例調用,還是需要定義一個?

UPDATE:

我想調用模型定義本身即我採取一個類的方法或函數需要這個功能,在此功能。我正在考慮一個功能,其行爲像Python的內置函數locals(),但應該只返回模型的屬性。

我還想補充一點,我會在尚未保存到數據庫的模型實例上調用此功能。所以實質上,我將在模型的實例上表示一個尚未存在於數據庫中的記錄。所以任何使用Manager or QuerySet的功能我猜並不是我尋找的原因。

例子:

class Person(models.Model): 
    name = ... 
    age = ... 

    def func_doing_something(self): 
      #get the string dictionary representation of this model's instance 
      #do something to it 
      #return something 

謝謝大家!

回答

1

我從這個SO post溶液發現我一直在尋找...

一些Django的對象obj

[(field.name, getattr(obj,field.name)) for field in obj._meta.fields] 

並調用dict()的結果。

1

使用P =人(名稱= '約翰',年齡= 10).values()

在這裏看到:https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.values

得到它的一個字符串使用:

s = str(p[0]) 
+0

感謝您的快速回復,但這只是我想要的第一部分。我想將該字典存儲到數據庫中,所以我想我需要先將它轉換爲字符串。有沒有其他方法可以做到這一點?如何將字典表示形式轉換爲字符串?非常感謝你! – ultrajohn

+1

你爲什麼要在db中存儲字符串表示?這是沒有意義的。 –

+0

假設我想用該字符串作爲參數調用另一個函數,並且我需要它是一個字符串,因爲該函數將以字符串的形式處理它。 :) – ultrajohn

1

你可以序列化你的對象到JSON格式,例如與Django的內置serializers 這可以讓你很容易反序列化。

+0

我讀過序列化程序期望QuerySet作爲參數。就我而言,我將一次在模型的單個實例上工作,然後將其保存到數據庫中。謝謝! – ultrajohn

相關問題