很抱歉在一天之内问了两个关于类似主题的问题,但我对 django 的无知已经完全接管了。基本上我有两个模型:
class Story(models.Model):
title = models.CharField(max_length=1000)
text = models.CharField(max_length=5000)
date = models.DateField(default=datetime.date.today, editable=False)
likes = models.IntegerField(default='0')
dislikes = models.IntegerField(default='0')
views = models.IntegerField(default='0')
author = models.ForeignKey('Author', related_name="username")
class Author(models.Model):
username = models.CharField(max_length=120, unique=True)
email = models.EmailField(blank=True)
firstname = models.CharField(max_length=500, blank=True)
lastname = models.CharField(max_length=500, blank=True)
你可以这样想,有人提交了一个故事,他们的名字进入了作者的表格。很简单的东西。我的问题是创建一个允许用户提交他们的故事和姓名的表单。我尝试了一个 inlineformset 并且没有运气我只是找不到一种方法来执行我所知道的只是一个简单的 AND sql 语句在幕后。
这是我的表单模型: StoryAuthorFormSet = inlineformset_factory(Author, Story)
class StoryForm(ModelForm):
class Meta:
model = Story
exclude = ('date', 'views', 'likes', 'dislikes', 'author')
这是我的看法
def submit_story(request):
if request.method == 'POST':
form = StoryForm(request.POST)
if form.is_valid:
#watch this nest part be aware of the author bit
author = form.save(commit=False)
story = StoryAuthorFormSet(request.POST, instance=author)
if author_formset.is_valid():
story.save()
author_formset.save()
return HttpResponseRedirect('/thanks/')
else:
form = StoryForm()
author_formset = StoryAuthorFormSet(instance=Author())
return render_to_response('submit/submit_story.html', locals(), context_instance=RequestContext(request))
我意识到他们可能是我错过的一个简单的解决方案......但我很难过任何想法都会非常感激......所以我将为任何需要的人做一些免费的 Clojure 和 Erlang 编程它!