无论何时进行任何模型更改,我都想保存一个新对象,而不是更新当前版本。
例如,让我们以一个基本场景为例,我有两个模型
class Question(models.Model):
version = models.PositiveIntegerField(blank=False)
title = models.CharField(max_length=250, blank=False)
answers = models.ManyToManyField('Answer')
def __str__(self):
return self.title
class Answer(models.Model):
version = models.PositiveIntegerField(blank=False)
text = models.CharField(max_length=100)
def __str__(self):
return self.text
我创建了一个新的Question对象。 让我们称它为Q1(pk = 1),它具有3个答案,分别为A1(pk = 1),A2(pk = 2)和A3(pk = 3)。
现在将新答案A4(pk = 4)添加到Q1(pk = 1)时。它创建一个新版本的Q1(pk = 2)并附加A4(pk = 4)。
这样我仍然可以访问Q1的早期版本。
答案 0 :(得分:-2)
您是否认为可以在视图中保存对象
然后将您的models.py更改为:
class Question(models.Model):
title = models.CharField(max_length=250, blank=False)
text_question = models.TextField(max_length=500)
def __str__(self):
return self.title
class Answer(models.Model):
related_question = models.ForeignKey(Question, on_delete=models.CASCADE)
text_comment = models.CharField(max_length=100)
def __str__(self):
return self.text_comment
以下是您的views.py外观如何的示例
def create_post_homework(request):
your_form = Yo(request.POST or None)
if request.method == "POST":
if create_post.is_valid():
create_post.save() # you save it
return redirect('/') # it redirects you to another page
args = {'create_post': create_post}
return render(request, 'ask/create_a_question.html', args)