2014-09-25 65 views
0

我知道如何通過提交的表單創建模型對象,但我想知道如何在視圖中創建對象而無需通過表單。我知道這可以通過shell來完成,但在視圖中我有不同的理由。如何在Django視圖中創建模型對象?

舉一個例子,假設我有一個包含標題和正文的博客表。我將如何創建一個新的對象來設置標題和正文的字段?

def createBlog(request): 
    #create a new blog object 
    #blog_obj.title= "First Blog" 
    ##blog_obj.body= "This is the body" 

更新: 這是我model.py

from django.db import models 

    class Rating(models.Model): 
     movie_name= models.CharField(max_length=100) 
     total_ratings = models.IntegerField() 
     total_rating_value = models.IntegerField() 
     rating_average = models.DecimalField(max_digits=2, decimal_places=2) 

更新2: 當我嘗試保存我的對象則返回錯誤(類 'decimal.InvalidOperation')。 rating_average是一個Decimal_field。 這是我的實際對象:

rating_obj = Rating(movie_name="Test Movie", total_ratings=1, total_rating_value= 5, rating_average= 5.0) 
+0

與通常情況下使用Python創建對象的方式相同。 – 2014-09-25 18:37:05

+0

你也可以訪問'request.POST [param]' – 2014-09-25 18:41:55

回答

3

這是直截了當Python代碼並沒有什麼特定的Django:

blog_obj = Blog(title="First Blog", body="This is the body") 

也許要經過好和易於理解Django tutorial

編輯:
爲了與解決您的問題,您DecimalField你需要設置max_digitsdecimal_places更大。

docs

注意,該數字必須大於或等於decimal_places。

+0

中的任何參數這就是我的想法,但是當我嘗試保存我的對象時,它返回一個錯誤(class'decimal.InvalidOperation')。我的rating_average是一個Decimal_field。這是我的實際對象:rating_obj = Rating(movie_name =「Test Movie」,total_ratings = 1,total_rating_value = 5,rating_average = 5.0) – 2014-09-25 19:01:28

+0

我們需要查看您的模型定義。請編輯並改進您的問題,因爲DecimalField有多個選項,請參閱https://docs.djangoproject.com/en/dev/ref/models/fields/#decimalfield。 – 2014-09-25 19:03:07

+0

好的,我已經更新了它。 – 2014-09-25 19:09:58

0

建議您創建模型管理器。來自here的示例:

class BookManager(models.Manager): 
    def create_book(self, title): 
     book = self.create(title=title) 
     # do something with the book 
     return book 

class Book(models.Model): 
    title = models.CharField(max_length=100) 

    objects = BookManager() 

book = Book.objects.create_book("Pride and Prejudice") 
相關問題