如何在Django视图中创建模型对象?

时间:2014-09-25 18:29:30

标签: python django

我知道如何通过提交的表单创建模型对象,但我想知道如何在视图中创建对象而无需通过表单。我知道这可以通过shell完成,但我有不同的理由在视图中这样做。

作为一个例子,让我们说我有一个博客表,其中有一个标题和一个正文。如何创建一个设置标题和正文字段的新对象?

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)

2 个答案:

答案 0 :(得分:7)

这是直接的Python代码,并没有特定于Django:

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

也许你想要通过好的和容易理解的Django tutorial

修改
为了解决您的DecimalField问题,您需要将max_digits设置为大于decimal_places

来自docs

  

请注意,此数字必须大于或等于decimal_places。

答案 1 :(得分: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")