我知道如何通过提交的表单创建模型对象,但我想知道如何在视图中创建对象而无需通过表单。我知道这可以通过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)
答案 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")