2014-09-25 66 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") 
相关问题